我在codeblocks中创建了非常简单的C++项目。我有头文件(CVector.h),源文件(CVector.cpp)和主代码(code.cpp)。当我尝试编译代码我得到了以下信息:没有匹配的调用函数
CVector.cpp|22|error: no matching function for call to 'CVector::CVector()'|
code.cpp
#include <iostream>
#include "CVector.h"
using namespace std;
int main() {
CVector vec1(1,2);
CVector vec2 (3,4);
cout << "vec1 data "; vec1.printData();
cout << "vec2 data "; vec2.printData();
cout << "vec1 area: " << vec1.area() << endl;
cout << "vec2 area: " << vec2.area() << endl;
return 0;
}
CVector.h
#ifndef CVECTOR_H
#define CVECTOR_H
class CVector
{
int x,y;
public:
CVector (int, int);
int area();
void printData();
CVector operator+ (CVector param);
};
#endif // CVECTOR_H
CVector.cpp
#include <iostream>
#include "CVector.h"
using namespace std;
CVector::CVector (int a, int b) {
x=a;
y=b;
}
int CVector::area() {return x*y;}
void CVector::printData(){
cout << "X = " << x << ", Y = " << y << endl;
}
CVector CVector::operator+ (CVector param)
{
CVector temp;
temp.x=x + param.x;
temp.y=y + param.y;
return temp;
}
该错误与操作员过载有关因为它在我评论这个函数时编译没有问题。
[默认构造函数不是在您明确声明自己的时候自动生成的](http://stackoverflow.com/questions/3734247/what-are-all-the-member-functions-created-by-compiler就像你所做的一样('CVector(int,int)')。 –
是的,我知道,我只是注意到我在运算符重载的定义中需要它。非常感谢你 –
编辑:...当你明确声明**你自己的... –