[英]getting error on compiling small C++ program
當我編譯程序時,當我使用 2 參數構造函數創建 bookClass 對象時,我收到關於 int 的錯誤。 該錯誤與解析為構造函數的整數參數有關。 該計划是:
#include <iostream>
#include <string>
using namespace std;
class bookClass{
private:
string bookName;
int bookNumber;
public:
void setName(string c){
bookName=c;
}
void setNumber(int d){
bookNumber=d;
}
string getName(){
return bookName;
}
int getNumber(){
return bookNumber;
}
bookClass(string a, int b){
bookName=a;
bookNumber=b;
}
};
int main()
{
int numberr;
string name;
cout << "Enter the book name: ";
cin >> name;
cout << "\nEnter the book number: ";
cin >> numberr;
bookClass book=new bookClass(name, numberr);
cout << "\n\nThe book " << book.getName() << " has book number " <<
book.getNumber() << endl;
return 0;
}
編譯您的代碼我沒有收到您建議的錯誤。 但是,這一行存在一個問題:
bookClass book = new bookClass(name, numberr);
C++ 不是 Java。 new
返回一個指向為給定類動態分配的內存的指針。
你想要的只是:
bookClass book (name, numberr);
你的代碼的問題很簡單。 我想你在 C++ 之前是用 Java 或 C# 編程的。 在 C++ 中,只有當我們想在堆上顯式創建一個對象(並獲得指向它的指針)時,我們才調用new
運算符。
bookClass* book=new bookClass(name, numberr);
但是,現在您遇到了麻煩,因為您正在調用book.getName()
,其中book
是指向某物的類型指針,並且它沒有成員getName()
。 您必須首先取消引用該指針,然后調用成員函數(*book).getName();
或者簡單地book->getName();
.
但是,由於 C++ 的對象不必在堆上(Java 對象必須),您可以使用bookClass book(name, numberr);
創建一個沒有new
運算符的對象bookClass book(name, numberr);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.