当我尝试运行以下代码时,我遇到了一些问题。我收到错误:"无法将参数从const A转换为A"。 Intellisense告诉我A没有合适的拷贝构造函数,但是定义了一个。
#include<iostream>
using namespace std;
class A
{
int x, *y;
public: A(int i) { x = i; y = new int[x]; }
A(A& a) { x = a.x; y = new int[x]; }
int get_x() const { return x; }
};
int f(A a) { return a.get_x(); }
int main() {
const A a(5);
cout << (a.get_x() == f(a));
system("Pause");
}
答案 0 :(得分:2)
你的拷贝构造函数应该有原型:
A(const A & a)
答案 1 :(得分:0)
建立电话的临时文件
int f(A a) { return a.get_x(); }
您需要在A
中构建const A
,但构造函数需要A &