我有一个关于 C++ 中嵌套类的初学者问题。互联网上有很多关于此的信息,但我仍然无法让它在没有编译错误的情况下正常工作。我只是想从 A 类内部的函数返回内部类 B。
template<class T>
class A
{
public:
A();
class B
{
public:
B(){};
};
B getB();
};
template<class T>
A<T>::A(){}
template<class T>
B A<T>::getB{return B();}
当我这样做时,我收到错误“B 未命名类型”。我相信解决方案是使用 typedef class A<T>::B b_class;
,但我仍然遇到同样的错误。
谢谢!
最佳答案
您需要更改一些内容:将括号添加到函数定义中,限定外部 B
与封闭类 ( A<T>::
) 以及 typename
一起(必需的,因为类型取决于 A 的类型)并将返回更改为实际对象创建。
这里,在固定源中列出:
template<class T>
typename A<T>::B A<T>::getB() {return B();}
//^----------------------------------------------typename
// ^---------------------------------------qualification
// ^---------------------parens
// ^---------c-tor call
关于c++ - 简单的嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32741396/