模板类的VS编译器错误

时间:2017-04-27 14:35:28

标签: c++ templates visual-c++

VS为此代码抛出了奇怪的编译器错误,在第9行给出了3个错误。 我之前在其他项目中使用过与此类似的代码并且工作正常。 Node类包含在头文件中,并且两个指针在构造函数中都设置为nullptr。

DZ40209000
template<class T>
class Edge
{
public:
    Edge<T> *next;
    Node<T> *destination;
    Edge<T>();
    ~Edge();
};

我假设最后2个错误与第一个错误有某种关联,所以我猜测有一个小的语法问题'导致所有3个问题。 就像我说的那样,我之前做过类似的事情,没有任何问题,所以这对我来说非常困惑。

1 个答案:

答案 0 :(得分:2)

你宣布了Node吗?编译器需要在Edge之前了解节点。

compiles

#include <iostream>
using namespace std;

// Use a forward-declaration of Node, so that the compiler knows this type exists.
template<class T> class Node;

template<class T>
class Edge
{
public:
    Edge<T> *next;
    Node<T> *destination;
    Edge<T>(){};
    ~Edge(){};
};

int main() {
    Edge<int> test;
    std::cout<<&test<<std::endl;
    return 0;
}
  

成功时间:0记忆:15240信号:0

     

0x7ffd75720b70