首頁  >  文章  >  後端開發  >  C++報錯:建構子必須在public區域聲明,怎麼處理?

C++報錯:建構子必須在public區域聲明,怎麼處理?

王林
王林原創
2023-08-21 20:26:461779瀏覽

在C 程式設計中,建構子是用來初始化類別的成員變數的重要函數。它在創建物件時自動調用,以確保物件的正確初始化。建構子必須在類別中聲明,但是有時會遇到錯誤提示「建構子必須在public區域宣告」。

這個錯誤通常是因為建構子的存取權限修飾符錯誤所造成的。在C 中,類別的成員變數和成員函數都有一個存取權限修飾符,包括public、private和protected。 public表示該成員可以在類別內外被訪問,private表示只能在類別內部訪問,而protected表示只能在類別內及其衍生類別中存取。

在類別的定義中,如果建構函式宣告的存取權限修飾符不是public,編譯器就會出現「建構函式必須在public區域宣告」的報錯資訊。因此,要解決這個問題,只需要將建構函式的存取權修飾符修改為public即可。

下面是一個範例程式碼:

class Student {
 private:
  string name;
  int age;

 public:
  Student(string n, int a) {
    name = n;
    age = a;
  }

  void display() {
    cout << "Name: " << name << endl;
    cout << "Age: " << age << endl;
  }
};

int main() {
  Student s("Tom", 18);
  s.display();
  return 0;
}

在上面的程式碼中,建構函式被定義為類別的一個public成員函數,這樣就可以被在類別外部存取和呼叫。如果將建構函式的可存取性設定為private或protected,則會提示「建構子必須在public區域宣告」的錯誤。

除了將建構子的存取權限修改為public,我們還可以在類別的定義中使用存取權限縮寫:

class Student {
  string name;
  int age;

 public:
  Student(string n, int a) {
    name = n;
    age = a;
  }

  void display() {
    cout << "Name: " << name << endl;
    cout << "Age: " << age << endl;
  }
};

這樣就可以省略private和public的關鍵字,並將建構函數預設為public。

總之,當遇到「建構子必須在public區域宣告」的錯誤時,應該先檢查建構子的存取權修飾符是否為public,並且遵循C 的存取權規則,以確保類別的成員變數和成員函數可以正確存取和呼叫。

以上是C++報錯:建構子必須在public區域聲明,怎麼處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn