cpp: "нет экземпляра конструктора"book::book"соответствует списку аргументов"

Я попробовал этот код в блоке кода, и он работает, но он вызывает у меня проблему в 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 ответ

Просто чтобы выделить проблему, стоит в строке: книга a2(a1("богатый папа бедный папа", 260));.

Здесь вы вызываете конструктор, передавая "rich dad бедный папа", который является const char[18], и там вы ожидаете char t[], поэтому измените объявление параметризованного конструктора на:

book (const char t[], float p) и скопируйте конструктор в: book(const book&a)

а также a2(a1("богатый папа, бедный папа", 260)), чтобы забронировать a2(a1).

Другие вопросы по тегам