#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下編譯卻能通過.........