Rumah > pembangunan bahagian belakang > C++ > Selesaikan masalah 'ralat: 'kelas' tidak mempunyai ahli bernama 'fungsi'' dalam kod C++

Selesaikan masalah 'ralat: 'kelas' tidak mempunyai ahli bernama 'fungsi'' dalam kod C++

王林
Lepaskan: 2023-08-26 19:52:45
asal
1637 orang telah melayarinya

解决C++代码中出现的“error: 'class' has no member named 'function'”问题

Selesaikan masalah "ralat: 'kelas' tidak mempunyai ahli bernama 'fungsi'" dalam kod C++

Apabila pengaturcaraan dalam C++, anda sering menghadapi pelbagai ralat kompilasi. Salah satu ralat biasa ialah "ralat: 'kelas' tidak mempunyai ahli bernama 'fungsi'". Ralat ini menunjukkan bahawa fungsi ahli yang dipanggil tidak ditemui dalam kelas. Di bawah ini kami akan memperkenalkan beberapa situasi dan penyelesaian biasa.

  1. Fungsi ahli yang diisytiharkan secara salah

Dalam kes ini, masalah biasanya timbul daripada ketidakselarasan antara definisi dan pelaksanaan kelas. Ralat ini berlaku apabila kami mengisytiharkan fungsi ahli dalam definisi kelas, tetapi lupa untuk benar-benar mentakrifkan fungsi ini dalam pelaksanaan.

Kod sampel adalah seperti berikut:

class MyClass {
public:
  void myFunction(); // 声明成员函数
};

int main() {
  MyClass obj;
  obj.myFunction(); // 调用成员函数
  return 0;
}
Salin selepas log masuk

Penyelesaian: Tambahkan definisi fungsi ahli yang sepadan dalam pelaksanaan kelas.

void MyClass::myFunction() {
  // 实现代码
}
Salin selepas log masuk
  1. Fungsi ahli ditakrifkan sebagai peribadi atau dilindungi

Jika fungsi ahli ditakrifkan sebagai peribadi atau dilindungi, ralat akan dilaporkan apabila fungsi dipanggil di tempat lain di luar kelas.

Kod sampel adalah seperti berikut:

class MyClass {
private:
  void myFunction(); // 私有成员函数
};

int main() {
  MyClass obj;
  obj.myFunction(); // 调用私有成员函数
  return 0;
}
Salin selepas log masuk

Penyelesaian: Tukar fungsi ahli persendirian kepada awam, atau tambahkan fungsi antara muka yang sepadan pada kelas untuk memanggil fungsi ahli persendirian.

class MyClass {
public:
  void myInterface() {
    myFunction(); // 调用私有成员函数
  }
  
private:
  void myFunction();
};

int main() {
  MyClass obj;
  obj.myInterface(); // 调用接口函数
  return 0;
}

void MyClass::myFunction() {
  // 实现代码
}
Salin selepas log masuk
  1. Fungsi ahli ditakrifkan dalam skop yang salah

Jika fungsi ahli ditakrifkan dalam skop yang salah, pengkompil tidak akan dapat mencari fungsi ahli dan akan melaporkan ralat.

Kod sampel adalah seperti berikut:

class MyClass {
public:
  void myFunction();
};

void myFunction() {
  // 实现代码
}

int main() {
  MyClass obj;
  obj.myFunction(); // 调用成员函数
  return 0;
}
Salin selepas log masuk

Penyelesaian: Tentukan fungsi ahli dalam skop kelas yang betul.

class MyClass {
public:
  void myFunction();
};

void MyClass::myFunction() {
  // 实现代码
}

int main() {
  MyClass obj;
  obj.myFunction(); // 调用成员函数
  return 0;
}
Salin selepas log masuk

Ringkasan

Apabila menghadapi ralat "ralat: 'kelas' tidak mempunyai ahli bernama 'fungsi'" dalam kod C++, kita perlu menyemak sama ada situasi di atas wujud dalam kod. Mengisytiharkan fungsi ahli dengan betul, menukar fungsi ahli persendirian kepada awam atau menambah fungsi antara muka, dan menentukan fungsi ahli dalam skop yang betul adalah semua cara yang berkesan untuk menyelesaikan masalah ini. Dengan menyemak kod dengan teliti dan membuat pembetulan mengikut penyelesaian di atas, kami boleh berjaya menyelesaikan ralat ini dan menyusun serta menjalankan program C++ kami dengan lancar.

Atas ialah kandungan terperinci Selesaikan masalah 'ralat: 'kelas' tidak mempunyai ahli bernama 'fungsi'' dalam kod C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan