我有一个非常简单的模板类。
#pragma once
#include <iostream>
template <class T>
class Test
{
protected:
class Node
{
public:
Node(Node& node) {}
protected:
virtual Node* copyNode(Node&);
private:
};
};
template <class T>
Test<T>::Node* Test<T>::copyNode(Test<T>::Node& node)
{
return new Test<T>::Node(node);
}
我在主程序中使用它如下。
#include "Test.h"
using namespace std;
int main()
{
Test<int> tree;
getchar();
}
我收到语法错误C2061:“identifier'Node'”。
声明和实现都在同一个头文件中(链接器存在模板类问题)。我正在使用Visual Studio 2015。
在没有内联编写的情况下实现copyNode
方法的正确方法是什么?
答案 0 :(得分:1)
typename
:
template <class T>
typename Test<T>::Node* Test<T>::Node::copyNode(typename Test<T>::Node& node)
{
return new Test<T>::Node(node);
}