无法将参数从const A转换为A.

时间:2015-09-04 13:31:09

标签: c++ oop

当我尝试运行以下代码时,我遇到了一些问题。我收到错误:"无法将参数从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");
}

2 个答案:

答案 0 :(得分:2)

你的拷贝构造函数应该有原型:

A(const A & a)

答案 1 :(得分:0)

建立电话的临时文件

int f(A a) { return a.get_x(); }

您需要在A中构建const A,但构造函数需要A &