簡體   English   中英

編譯小 C++ 程序時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM