[英]Can`t initialize object using constructor in c++
#include <iostream>
using namespace std;
class Book
{
public:
Book(const string& ISBN,const string& title,const string& author,const string& cprDate,const bool& ch);
void checkBook(void);
void uncheckBook(void);
string ISBN(){return I;};
string title(){return t;};
string author(){return a;};
string cprDate(){return c;};
bool isChecked(){return check;};
private:
string I; //ISBN
string t; //title
string a; //author
string c; //copyright date
bool check; //is checked?
};
Book::Book(const string& ISBN,const string& title,const string& author,const string& cprDate,const bool& ch){
I=ISBN;
t=title;
a=author;
c=cprDate;
check=ch;
}
void Book::checkBook(void)
{
check=true;
}
void Book::uncheckBook(void)
{
check=false;
}
int main()
{
Book eragon{"ISBN:19851654-1851651-156115-156156","Eragonas","Paolini","2007",true};
//^This does not compile, it gives 2 errors: expected primary-expression before eragon
//and expected ';' before semicolon
return 0;
}
我正在從“編程-使用C ++的原理和實踐”這本書中進行練習,而我被困在第9章練習5中:
本練習以及接下來的幾個練習要求您設計和實現Book類,例如您可以想象作為圖書館軟件的一部分。 課堂書籍應具有ISBN,標題,作者和版權日期的成員。 還存儲有關書籍是否已簽出的數據。 創建用於返回這些數據值的函數。 創建用於簽入和簽出書籍的功能。 對輸入到Book中的數據進行簡單驗證; 例如,僅接受nn-nx形式的ISBN,其中n是整數,x是數字或字母。 將ISBN存儲為字符串。
而且我什至不能初始化Book對象:/
您的編譯器不在C ++ 11模式下。 {...}
初始化程序語法是C ++ 11中的新增功能。 請參閱此問題以在CodeBlocks中啟用C ++ 11支持 。
另一種選擇是使用C ++ 03語法,但是如果本書使用的是C ++ 11,則最終可能需要將其打開。 C ++ 03語法為:
Book eragon("ISBN:19851654-1851651-156115-156156","Eragonas","Paolini","2007",true);
我不知道您的編譯器是否正在為您執行此操作,但是,可能您需要包括字符串標頭
#include <string>
並如Dark Falcon所說,將您的書籍初始化從{...}更改為(...),以在c ++ 11之前的編譯器中進行編譯
在int main()中,您使用錯誤的括號集來初始化構造函數。 使用()代替{}。
更改為-
書籍eragon(“ ISBN:19851654-1851651-156115-156156”,“ Eragonas”,“ Paolini”,“ 2007”,true);
希望它能解決您的問題。
在經典C ++中,您將使用以下方法在堆上分配一本書
Book *eragon = new Book("ISBN: ..." And all your other parameters
我在平板電腦上,無法復制所有參數以准確顯示
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.