我希望派生类是模板类的后代。该类取决于后代的成员。 总之我想这个代码编译:使用派生类'typedef的基地
struct IBootParams
{
virtual bool GetImmediate() = 0;
};
template <class T>
struct TBootBootParams
{
typename T::TransType transferType;
typename T::UseAbort_ useAbort;
bool GetImmediate()
{
if (transferType == T::e1)
{
return useAbort.someFlag;
}
return false;
}
};
struct BootBootParams : public TBootBootParams<BootBootParams>
{
enum SomeEnum
{
e1=0,
e2,
e3
};
struct UseAbort
{
bool someFlag;
char someMember;
int otherMember;
} useAbort;
typedef SomeEnum TransType;
typedef UseAbort UseAbort_;
};
struct BootAltBootParams : public TBootBootParams<BootAltBootParams>
{
enum SomeEnum
{
e1=5,
e2,
e3
};
struct UseAbort
{
bool someFlag;
long long someMember;
long long otherMember;
} useAbort;
typedef SomeEnum TransType;
typedef UseAbort UseAbort_;
};
int _tmain(int argc, _TCHAR* argv[])
{
BootBootParams bp;
BootAltBootParams bpa;
bool f = bp.GetImmediate();
f = bpa.GetImmediate();
}
那么错误是什么? – ybungalobill 2010-12-18 20:04:41
你为什么要声明IBootParams? – 2010-12-18 20:06:26