当我编译程序时,当我使用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;
}
答案 0 :(得分:0)
编译代码我没有收到您建议的错误。但是,这一行存在问题:
bookClass book = new bookClass(name, numberr);
C ++不是Java。 new
返回一个指向为给定类动态分配的内存的指针。
你想要的只是:
bookClass book (name, numberr);
答案 1 :(得分:0)
您的代码问题很简单。我想你是在C ++之前用Java或C#编程的。在C ++中,只有当我们想在堆上明确地创建一个对象(并获得指向它的指针)时,我们才调用new
运算符。
bookClass* book=new bookClass(name, numberr);
但是,现在你遇到了麻烦,因为你正在调用book.getName()
,其中book
是某种类型的指针,并且它没有成员getName()
。您必须首先取消引用该指针,然后调用成员函数(*book).getName();
或简单地book->getName();
。
但是,由于C ++的对象不必在堆上(Java对象必须),因此可以使用new
bookClass book(name, numberr);
运算符的对象