Тип наследника как шаблонный аргумент
От: df Россия  
Дата: 09.02.18 11:11
Оценка:
Привет всем.

Не соображу, можно-ли как-то сделать такое:

class Base
{
  Helper<TOwner>* _helper;
}

т.е. когда

class Derived : class Base
{
}

то TOwner == Derived
Re: Тип наследника как шаблонный аргумент
От: Conr Россия  
Дата: 09.02.18 11:14
Оценка: 2 (1)
Здравствуйте, 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>
{

};

?
Re: Тип наследника как шаблонный аргумент
От: rg45 СССР  
Дата: 09.02.18 11:17
Оценка: 4 (2) +2
Здравствуйте, 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>
{
};
--
Справедливость выше закона. А человечность выше справедливости.
Re[2]: Тип наследника как шаблонный аргумент
От: df Россия  
Дата: 09.02.18 11:21
Оценка:
Здравствуйте, 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 существует.
Ну и вроде как использовать шаблон только для того, чтобы "объявить себя" как-то странно немного. Хотя, может и неправ.
Подумал, что так и сделаю, если никто "магии" не предложит.
Re[2]: Тип наследника как шаблонный аргумент
От: df Россия  
Дата: 09.02.18 11:24
Оценка:
Здравствуйте, rg45, Вы писали:

R>Это называется CRTP, недавно обсуждалось в соседнем топике.


Ах, даже паттерн такой есть. Ну ок, значит.

пс: а что за обсуждение было?
Re[3]: Тип наследника как шаблонный аргумент
От: rg45 СССР  
Дата: 09.02.18 11:27
Оценка: 2 (1)
Здравствуйте, df, Вы писали:

df>пс: а что за обсуждение было?


К вопросу о порядке инициализации
Автор: YuriV
Дата: 05.02.18
--
Справедливость выше закона. А человечность выше справедливости.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.