自定义class 与vector

来源:互联网 发布:网络毒鸡汤是什么意思 编辑:程序博客网 时间:2024/05/16 11:11
代码:

#include <stdio.h>#include <vector>using namespace std;class MyClass{public:MyClass(){printf("call constructor\n");};MyClass(MyClass &b){printf("call copy constructor\n");};};int main(){vector<MyClass> vec;MyClass a;vec.push_back(a);return 0;}




是通不过编译的,error C2558: class“MyClass”: 没有可用的复制构造函数或复制构造函数声明为“explicit”
原来是拷贝构造函数前必须加上const........(没有搞懂为什么)

后来又遇到一个奇葩的问题:


/* * test.cpp * *  Created on: 2014-1-17 *      Author: zhijian */#include <stdio.h>#include <vector>using namespace std;class MyClass{public:MyClass(){printf("call constructor\n");};MyClass(const MyClass &b){printf("call copy constructor\n");};MyClass &operator=(MyClass &b){printf("call operator = \n");return *this;}};int main(){vector<MyClass> vec;MyClass a;vec.push_back(a);return 0;}



也要报错: error C2679: 二进制“=”: 没有找到接受“const MyClass”类型的右操作数的运算符(或没有可接受的转换)
发现也是operator(Myclass &b)少加了const
但是这段代码放在mingw下编译却能通过.........

0 0
原创粉丝点击