这看起来很简单,但我没有解决这个问题的好主意。最小的例子:
template<class T>
struct C {
typename T::t var;
};
class B;
struct A : public C<B> {
typedef int t;
};
struct B
{
A a;
};
int main() { return 0; }
我知道它可以通过给 C 少 B 来解决:
template<class t>
struct C {
t var;
};
struct A : public C<int> {
};
但这并不令人满意(特别是因为 B 有很多我在 C 中真正需要的类型定义和静态函数)。有什么更好的办法来解决这个问题吗?