如何在该接收类之外声明嵌套类的方法

  • 本文关键字:声明 嵌套 方法 c++
  • 更新时间 :
  • 英文 :


我尝试在自己的代码中创建某些东西的定义,但编译器无法识别它,所以只是简单的代码,我制作了一个更简短的抽象代码来表示我正在尝试做的事情:

template <class T>
class A
{
public:
A() {}
~A() {}
class B
{
T x;
public:
B() : x(0) {}
~B(){}
void printAB() const;
B& increase();
};
};

现在,我想在类外定义printABincrease,所以printAB不会产生任何问题,因为它返回 void,但是当我尝试定义PrintAB时,编译器无法识别它并在其下划线:

这个效果很好:

template <class T>
void A<T>::B::printAB() const
{
cout << "Hello World" << endl;
}

而这个它不认识:

template<class T>
A::B & A<T>::B::increase()
{
x++;
return *this;
}

我也试图做出这样的声明:

template<class T>
A<T>::B & A<T>::B::increase() {
...
}

我必须说它不适用于你们建议的 A,所以请问任何其他可能有帮助的解决方案吗?

我们应该告诉编译器我们所说的A<T>::B是什么意思

template<class T> 
typename A<T>::B & A<T>::B::increase() 
{
x++;
return *this;
}

最新更新