Как подружиться с конкретной специализацией шаблона?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как подружиться с конкретной специализацией шаблона?

Сообщение Anonymous »

Существует ли синтаксис для подруги только определенные специализации шаблонного класса, или вам нужно дружить со всеми специализациями с такими, как: < /p>

Код: Выделить всё

template friend class Bar;
< /code>

Если он существовал, я бы искал что -то вроде: < /p>

template friend class Bar;
< /code>

Похоже, что специализации имеют свою собственную «дружелюбную» личность, потому что они не друзья друг друга по умолчанию.  Например, getfoo () < /code> здесь не может быть вызван неконфектным случаем, полученным из специализации Const, потому что он частное: < /p>

template class Bar;

template
class Bar {
public:
Bar (std::string name) : _foo (name) { }
FooType const * operator->() const
{ return &getFoo(); }
private:
FooType const & getFoo() const
{ return _foo; }
private:
FooType _foo;
};

template
class Bar : public Bar {
public:
Bar (std::string name) : Bar (name) { }
FooType * operator->()
{ return &getFoo(); }
private:
FooType & getFoo()
{ return const_cast(Bar::getFoo()); }
};
Вы должны добавить шаблон bar bar; к специализации Const. 'Friend' "> друг смеш.)

Подробнее здесь: https://stackoverflow.com/questions/195 ... ialization
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»