Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ralat C++: Pembina mesti diisytiharkan di kawasan awam, bagaimana untuk menanganinya?

Ralat C++: Pembina mesti diisytiharkan di kawasan awam, bagaimana untuk menanganinya?

王林
王林asal
2023-08-21 20:26:461991semak imbas

Dalam pengaturcaraan C++, pembina ialah fungsi penting yang digunakan untuk memulakan pembolehubah ahli kelas. Ia dipanggil secara automatik apabila objek dicipta untuk memastikan pemulaan objek yang betul. Pembina mesti diisytiharkan dalam kelas, tetapi kadangkala anda akan menemui mesej ralat "Pembina mesti diisytiharkan di kawasan awam."

Ralat ini biasanya disebabkan oleh pengubah suai akses pembina yang salah. Dalam C++, pembolehubah ahli dan fungsi ahli kelas mempunyai pengubah suai akses, termasuk awam, peribadi dan dilindungi. Awam bermakna ahli boleh diakses di dalam dan di luar kelas, peribadi bermakna ia hanya boleh diakses dalam kelas, dan dilindungi bermakna ia hanya boleh diakses dalam kelas dan kelas terbitannya.

Dalam takrif kelas, jika pengubah suai akses yang diisytiharkan oleh pembina tidak awam, pengkompil akan memaparkan mesej ralat "Pembina mesti diisytiharkan di kawasan awam". Oleh itu, untuk menyelesaikan masalah ini, anda hanya perlu menukar pengubah suai akses pembina kepada awam.

Berikut ialah contoh kod:

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;
}

Dalam kod di atas, pembina ditakrifkan sebagai fungsi ahli awam kelas, supaya ia boleh diakses dan dipanggil di luar kelas. Jika kebolehaksesan pembina ditetapkan kepada peribadi atau dilindungi, mesej ralat "Pembina mesti diisytiharkan di kawasan awam" akan digesa.

Selain menukar kebenaran akses pembina kepada awam, kita juga boleh menggunakan singkatan kebenaran akses dalam takrif kelas:

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;
  }
};

Dengan cara ini kita boleh meninggalkan kata kunci peribadi dan awam dan menetapkan pembina kepada awam dengan lalai.

Ringkasnya, apabila anda menghadapi ralat "Pembina mesti diisytiharkan di kawasan awam", anda harus terlebih dahulu menyemak sama ada pengubah suai akses pembina adalah awam, dan ikuti peraturan hak akses C++ untuk memastikan pembolehubah ahli dan ahli kelas Fungsi boleh diakses dan dipanggil dengan betul.

Atas ialah kandungan terperinci Ralat C++: Pembina mesti diisytiharkan di kawasan awam, bagaimana untuk menanganinya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn