我在另一个类中有一个Node类,它在Structure类中是私有的,这是我正在使用的主类。然后我在另一个.cpp文件中,该文件实现了structure.h文件中的函数,该文件包含Structure类和嵌套在private类下的Structure类中的Node类。
创建返回类型的Node *时,如何访问该Node类。我一直搞乱它一段时间没有任何作用。它允许我返回int,bool,double,但不返回Node *。
"Structure.h"
template <class T>
class Structure
{
public:
// Structure functions();
private:
class Node
{
public::
// Node functions and variables;
}
// Structure functions_private();
}
答案 0 :(得分:1)
你的意思是:
template< class T >
typename Structure<T>::Node* Structure<T>::MyMemberFunction()
{
return new Node();
}
作为一个例子。
此外,您还需要将此文件放在头文件中而不是源文件中。
答案 1 :(得分:1)
在类定义中,您只需将类型称为Node
。
外部,如果它取决于模板参数,则需要限定名称和typename
:
Structure<int>::Node * some_function(); // not dependent, no typename
template <typename T>
typename Structure<T>::Node * some_template(); // dependent, needs typename