cpp:“没有构造函数的实例”book :: book“匹配参数列表”

时间:2018-04-14 01:30:57

标签: c++ copy-constructor

我在代码块上尝试了这个代码并且它可以工作,但它在visual studio中给我一个问题。我不知道问题究竟在哪里。 我得到的错误是:

  

没有构造函数“book :: book”的实例匹配参数列表

更新的代码:

#include<iostream>
#include<cstring>
using namespace std;
class book
{
private:
    int npage;
    char title[30];
public:
    book(char t[], int p = 33)
    {
        npage = p;
        strcpy_s(title, t);
    }
    book(book&a)
    {
        npage = a.npage;
        strcpy_s(title, a.title);
    }
    void p()
    {
        cout << "page : " << npage << endl << "title : " << title << endl;
    }
};
int main()
{
    char c[30] = "rich dad poor dad";
    book a1(c, 260);
    book a2(a1("rich dad poor dad", 260));
    a1.p();
    system("pause");
}

1 个答案:

答案 0 :(得分:0)

只是为了高亮问题就行了:预订a2(a1(“富爸爸穷爸爸”,260));.

在这里,您通过传递“富爸爸可怜的爸爸”来调用构造函数,这是const char [18]并且您期望char t [],因此将参数化构造函数声明更改为:

book(const char t [],float p) 并将构造函数复制到: 书(const book&amp; a)

以及a2(a1(“富爸爸穷爸爸”,260))预订a2(a1)。