Привет всем.
Не соображу, можно-ли как-то сделать такое:
class Base
{
Helper<TOwner>* _helper;
}
т.е. когда
class Derived : class Base
{
}
то TOwner == Derived
Здравствуйте, df, Вы писали:
df>Привет всем.
df>Не соображу, можно-ли как-то сделать такое:
df>
df>class Base
df>{
df> Helper<TOwner>* _helper;
df>}
df>т.е. когда
df>class Derived : class Base
df>{
df>}
df>то TOwner == Derived
df>
template<class TOwner>
class Base
{
Helper<TOwner>* _helper;
};
class Derived : public Base<Derived>
{
};
?
Здравствуйте, df, Вы писали:
df>Привет всем.
df>Не соображу, можно-ли как-то сделать такое:
df> . . .
Это называется
CRTP, недавно обсуждалось в соседнем топике.
template <typename TOwner>
class Base
{
public:
// . . .
private:
TOwner& derived() {return static_cast<TOwner&>(*this); }
const TOwner& derived() const {return static_cast<const TOwner&>(*this); }
};
class Derived : public Base<Derived>
{
};
Здравствуйте, Conr, Вы писали:
df>>Не соображу, можно-ли как-то сделать такое:
df>>
df>>class Base
df>>{
df>> Helper<TOwner>* _helper;
df>>}
df>>т.е. когда
df>>class Derived : class Base
df>>{
df>>}
df>>то TOwner == Derived
df>>
C>C>template<class TOwner>
C>class Base
C>{
C> Helper<TOwner>* _helper;
C>};
C>class Derived : public Base<Derived>
C>{
C>};
C>
C>?
Привет, Вит, да, это первая идея, которая возникает.
Просто подумал, что мало-ли какая магия type_traits существует.
Ну и вроде как использовать шаблон только для того, чтобы "объявить себя" как-то странно немного. Хотя, может и неправ.
Подумал, что так и сделаю, если никто "магии" не предложит.
Здравствуйте, rg45, Вы писали:
R>Это называется CRTP, недавно обсуждалось в соседнем топике.
Ах, даже паттерн такой есть. Ну ок, значит.
пс: а что за обсуждение было?
Здравствуйте, df, Вы писали:
df>пс: а что за обсуждение было?
К вопросу о порядке инициализацииАвтор: YuriV
Дата: 05.02.18