//file: b.h
template
struct B
{
T obj;
void a()
{
obj.A::foo();
}
};
//file: main.cpp
#include "b.h"
struct A
{
void foo() {}
};
struct D: public A {};
B x;
int main()
{
x.a();
return 0;
}
In member function ‘void B::a()’:
error: ‘A’ has not been declared
A - один из родительских классов
(
Read more... )
Comments 24
inline
void B::a()
{
typeof(obj.A)::foo();
};
Reply
Reply
Reply
и в C, насколько я знаю, тоже нет
ваша ссылка указывает на нестандартное расширение языка - я таким не пользуюсь и вам не советую
Reply
Reply
In member function ‘void B::a() [with T = D]’:
error: no type named ‘A’ in ‘struct D’
Reply
Reply
это не важно в этом случае - приведенная запись подразумевает что A - внутренний класс темплетного параметра - а оно как раз наоборот
Reply
И что это за запись:
template
struct B
Это парсер скобки съел, или так и надо?
Reply
Reply
Reply
такое нужно при множественном наследовании при совпадении имен в предках
Reply
Reply
Reply
Leave a comment