在构建图表时我有以下内容.
#include <vector>
using namespace std;
template<class T>
class Node
{
private:
T data;
Node<T> *link;
vector<T> neighbors;
public:
Node(){neighbors = new vector<T>();};
};
int main()
{
Node<int> n;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
...返回错误C2679:binary'=':找不到运算符...
我正在使用VS2010.怎么了?谢谢!
该new运营商返回一个指针类型,但你的成员变量neighbors不是指针.因此,您将指针(结果new)分配给非指针类型.你的neighbors变量需要是一个指针:vector<T>* neighbors.
但我认为你可能误解了new这里的用法.您可能根本不应该使用向量指针.只需删除该行neighbors = new vector<T>().矢量对象将自动初始化并可供使用.
在C++中,new关键字在堆上分配和初始化对象,然后必须在以后使用它们释放delete.new通过简单地将对象初始化为自动变量来避免关键字是最好的,例如:
vector<T> neighbors;
这样,您不必担心内存管理,并且当向量对象超出范围时会自动销毁它.