Mã sau đây không biên dịch. Tôi nhận được thông báo lỗi: lỗi C2039: 'Asub': không phải là thành viên của 'C'Loại "Được kế thừa" sử dụng CRTP và typedef
Ai đó có thể giúp tôi hiểu điều này không?
Đã thử VS2008 & Trình biên dịch 2010.
template <class T>
class B
{
typedef int Asub;
public:
void DoSomething(typename T::Asub it)
{
}
};
class C : public B<C>
{
public:
typedef int Asub;
};
class A
{
public:
typedef int Asub;
};
int _tmain(int argc, _TCHAR* argv[])
{
C theThing;
theThing.DoSomething(C::Asub());
return 0;
}
Bạn nên * luôn * p số dòng rovide có lỗi biên dịch. – abelenky
'struct A' trong ví dụ là gì? – AlwaysLearning