关于vs编译error c2679的一些经验

之前这个问题困了我一早上,一直没编译过去

原来的代码是这样的

class A

{

public:

  int m_var;

    A();

    ~A();

  void operator=(A& a)

};

void A::A()

{

  m_var = 0;

}

//使用

std::vector<A> g_va;

g_va.push_back( A );  // c2679

这样编译会有error c2679

找了很久,原因在于构造函数,编译器在编译时不知道给g_Va这个vector里的A这个构造函数分配多少内存,故出现c2679"="错误

解决这个把构造函数里的初始化代码(m_var = 0)注释掉就可以了 ,如果一定要使初始化某些变量可以定义个初始化的成员调用

这里我还是不知道怎样才能按这样的写法编译过去,不知道是不是没有办法在vector里使用在构造函数里初始化的类,如果有人知道请告知

原文地址:https://www.cnblogs.com/dcai/p/1833268.html