Хорошо, может быть, не самое лучшее название, но вот в чем дело:Нельзя использовать struct в производном шаблоном классе?
У меня есть шаблонный интерфейс:
template<typename T>
class MyInterface
{
public:
struct MyStruct
{
T value;
};
virtual void doThis(MyStruct* aPtr) = 0;
};
и реализация:
template <typename T>
class MyImpl : public MyInterface<T>
{
public:
void doThis(MyStruct* aPtr)
{
} // doThis
};
Однако компилятор жалуется:
In file included from MyTest.cpp:3:0:
MyImpl.h:7:17: error: ‘MyStruct’ has not been declared
void doThis(MyStruct* aPtr)
Почему?
Используйте 'typename MyInterface :: MyStruct'. –
BoBTFish