c++ - 这是什么意思? : note: no known conversion for argument 1 from ‘int’ to ‘const account&’

标签 c++

我试图理解我们通常在 C++ 程序中遇到的错误的含义。

在编译程序时我遇到了一个错误(我故意犯了这个错误,请不要告诉我如何更正它)并且存在一个注释:

note:   no known conversion for argument 1 from ‘int’ to ‘const account&’

我想看懂这张纸条的意思。

我的程序是:

#include<iostream>
class account
{
    private:
        int a_no;
    public:
        account()
        {
            a_no = 0;
        }
        void showData()
        {
            std::cout<<"\n account number = "<<a_no<<std::endl;
        }
};
int main()
{
    account a1;
    a1.showData();
    account a2(2);
    a2.showData();
    return 0;
}

我知道我还没有定义一个可以接受一个参数的构造函数,这样做会消除我的错误。

好的,编译时我得到了:

file1.cpp: In function ‘int main()’:
file1.cpp:20:17: error: no matching function for call to ‘account::account(int)’
     account a2(2);
                 ^
file1.cpp:20:17: note: candidates are:
file1.cpp:7:9: note: account::account()
         account()
         ^
file1.cpp:7:9: note:   candidate expects 0 arguments, 1 provided
file1.cpp:2:7: note: account::account(const account&)
 class account
       ^
file1.cpp:2:7: note:   no known conversion for argument 1 from ‘int’ to ‘const account&’

我想知道最后一行 file1.cpp:2:7: note: no known conversion for argument 1 from ‘int’ to ‘const account&’ 是什么意思?

最佳答案

1) 您已经知道您没有采用 int 的构造函数。 2) 你知道你正试图用一个 int 构造帐户。 3) 如果你不这样做,编译器将创建默认的复制构造函数、赋值运算符 4) 默认的复制构造函数采用对帐户的 const 引用

那么这里发生了什么?由于只有一个默认构造函数,并且您正在使用一个参数进行构造,因此编译器认为您想要复制构造。当你给他一个 int 作为复制构造函数的参数时,编译器试图将 int 转换为一个帐户 - 这是行不通的,他告诉你:“无法从 int 转换为帐户”

了解这一点非常重要,因为这是许多错误的来源。您可能不想调用复制构造函数。但是,如果编译器真的找到了一种方法将您用作参数的类型转换为帐户,会发生什么情况?一团糟....

关于c++ - 这是什么意思? : note: no known conversion for argument 1 from ‘int’ to ‘const account&’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34564636/

相关文章:

c++ - 为什么在英特尔编译器上将 OpenMP 的 firstprivate 与 std::vector 结合使用时会出现未定义的行为?

c++解析文本文件的价格

c++ - 如何正确包含头文件和实现文件?

c++ - 在 C++ 扑克中对一手牌进行排序

c++ - 在内联汇编代码中使用 C++ 命名空间

c++ - 将函数作为模板参数传递给成员函数

C++:指针值更改退出函数

c++ - 如何使用高字节和低字节?

c++ - 超高清 tx_waveforms

c++ - 将 VARIANT 转换为无符号字符数组