По некоторым причинам я хотел бы написать такой код:
template<class T>
class C : public T
{
friend class T;
};
Думаю код понятен. Я хочу иметь шаблон класса, который определяет класс, производный от класса, переданного ему в качестве параметра шаблона, и, чтобы немного усложнить ситуацию, я хотел бы определить базовый класс как друг производного. Код выглядит нормально с компилятором MSVC, но компилятор GNU C++ много жалуется. Что нужно сделать, чтобы получить желаемый функционал?
class C
. Вы можете сказать, ну, это не обязательно должно быть приватным, просто не позволяйте плебеям использовать его, что правда, но некоторые люди очень взволнованы, когда вы говорите им, что (кроме отключения копий по умолчанию) модификаторы доступа в С++ - пустая трата времени, и вы всегда должны делать все общедоступным ;-) - person Steve Jessop   schedule 26.10.2011strlen
- UB, и это их собственная вина, что не RTFM. - person Steve Jessop   schedule 04.11.2011