Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ralat sintaks C++: fungsi bukan ahli tidak boleh mempunyai penunjuk ini, bagaimana untuk menanganinya?

Ralat sintaks C++: fungsi bukan ahli tidak boleh mempunyai penunjuk ini, bagaimana untuk menanganinya?

WBOY
WBOYasal
2023-08-22 08:38:06857semak imbas

Dalam pengaturcaraan C++, penunjuk "ini" adalah konsep yang sangat penting. Ia mewakili alamat objek semasa dan membenarkan fungsi ahli bukan statik untuk mengakses pembolehubah ahli dan fungsi ahli objek semasa.

Walau bagaimanapun, dalam pengaturcaraan C++, anda mungkin menghadapi ralat: fungsi bukan ahli tidak boleh mempunyai penunjuk ini. Ralat ini adalah kerana menggunakan penunjuk ini dalam fungsi bukan ahli pada asasnya bermaksud untuk mengakses pembolehubah ahli atau fungsi ahli objek semasa, tetapi fungsi bukan ahli tidak mempunyai contoh objek, jadi ralat sintaks akan berlaku.

Jadi, bagaimana untuk menangani ralat ini?

Penyelesaian mudah ialah menukar fungsi bukan ahli kepada fungsi ahli. Fungsi ahli mempunyai penunjuk ini, jadi masalah ini boleh diselesaikan dengan menukar fungsi bukan ahli kepada fungsi ahli. Proses penukaran adalah sangat mudah Anda hanya perlu menambah nama kelas dan penghurai skop "::" sebelum nama fungsi dalam pengisytiharan fungsi. Sebagai contoh, terdapat fungsi bukan ahli f dalam kelas A, dan kini anda ingin menukarnya menjadi fungsi ahli, anda boleh melakukan ini:

class A {
public:
    void f() {
        // ...
    }
};

Penyelesaian lain ialah menghantar alamat objek semasa melalui parameter untuk diakses pembolehubah ahli dan fungsi ahli. Dalam fungsi bukan ahli, anda boleh menghantar alamat objek semasa sebagai parameter dan menggunakan penunjuk untuk mengendalikan pembolehubah ahli dan fungsi ahli dalam fungsi. Contohnya:

class A {
public:
    int x;
    void f(int y) {
        x = y;
    }
};

void g(A* a) {
    a->f(10);
}

int main() {
    A a;
    g(&a);
    cout << a.x << endl; //Output: 10
    return 0;
}

Dalam contoh ini, kami mentakrifkan kelas A, yang mempunyai pembolehubah ahli x dan fungsi ahli f. Dalam fungsi bukan ahli g, kami menghantar penuding ke objek semasa melalui parameter, dan kemudian memanggil fungsi ahli f dalam fungsi untuk mengendalikan pembolehubah ahli x.

Secara umumnya, penunjuk "ini" adalah konsep yang sangat penting, terutamanya dalam pengaturcaraan C++. Apabila menghadapi ralat bahawa fungsi bukan ahli tidak boleh mempunyai penunjuk ini, anda boleh cuba menukar fungsi kepada fungsi ahli, atau lulus alamat objek semasa melalui parameter untuk mengendalikan pembolehubah ahli dan fungsi ahli.

Atas ialah kandungan terperinci Ralat sintaks C++: fungsi bukan ahli tidak boleh mempunyai penunjuk ini, 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