我有一个模板类, Foo :
template <class A, class B>
class Foo
{
public:
Foo(A &aInstance);
private:
Attr<Foo> _attr;
};
然后我有另一个名为 Attr 的模板类,它是我的 Foo 类的一个属性,它以 Foo 类本身作为模板参数。
template <class C>
class Attr
{
class SomeType
{
SomeType();
~SomeType();
};
Attr(const SomeType* st);
~Attr();
private:
Attr();
}
我想在构造函数中初始化 _attr(Attr 类型),将模板中的第一个参数转换为 SomeType。
Foo 构造函数实现:
template<class A, class B>
Foo<A, B>::Foo(A &aInstance):
_attr(
(Attr<Foo<A, B> >::SomeType *) aInstance)
{
}
这不会编译:
错误:“)”标记之前的预期主表达式
该错误指的是 Foo 构造函数实现中的转换线,好像 SomeType 未被识别。
我现在有一个实例,但仍然遇到同样的错误。