Rumah pembangunan bahagian belakang C++ 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?

Aug 22, 2023 am 08:38 AM
ralat sintaks c++ fungsi bukan ahli penunjuk ini

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() {
        // ...
    }
};
Salin selepas log masuk

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;
}
Salin selepas log masuk

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menyelesaikan ralat sintaks C++: 'ungkapan utama yang dijangka sebelum ',' token'? Bagaimana untuk menyelesaikan ralat sintaks C++: 'ungkapan utama yang dijangka sebelum ',' token'? Aug 25, 2023 pm 07:30 PM

Bagaimana untuk menyelesaikan ralat sintaks C++: 'expectedprimary-expressionbefore', 'token'? Gambaran Keseluruhan: Semasa menulis kod C++, kadangkala kami menghadapi pelbagai ralat. Salah satu daripadanya ialah "ungkapan-utama yang dijangkakan sebelum','token" (ungkapan utama tiada sebelum koma). Ralat ini biasanya dikesan semasa proses penyusunan, ia mendorong kita bahawa a

Bagaimana untuk menyelesaikan ralat sintaks C++: 'ungkapan utama yang dijangkakan sebelum '.'? Bagaimana untuk menyelesaikan ralat sintaks C++: 'ungkapan utama yang dijangkakan sebelum '.'? Aug 26, 2023 pm 07:43 PM

Bagaimana untuk menyelesaikan ralat sintaks C++: 'expectedprimary-expressionbefore'.'token'? Apabila menulis atur cara dalam C++, kadangkala kita menghadapi pelbagai ralat sintaks. Salah satu ralat biasa ialah 'expectedprimary-expressionbefore'.'token'. Apabila kami menggunakan sintaks yang salah untuk mengakses ahli kelas dalam kod kami, pengkompil akan melaporkan ralat ini.

Bagaimana untuk menyelesaikan ralat sintaks C++: 'pemula dijangka sebelum '(' token'? Bagaimana untuk menyelesaikan ralat sintaks C++: 'pemula dijangka sebelum '(' token'? Aug 26, 2023 pm 09:37 PM

Bagaimana untuk menyelesaikan ralat sintaks C++: 'expectedinitializerbefore'('token'? Dalam pengaturcaraan C++, anda sering menghadapi pelbagai ralat kompilasi. Salah satu ralat biasa ialah 'expectedinitializerbefore'('token'. Dalam artikel ini, kami Punca ralat ini akan dibincangkan secara terperinci dan penyelesaian akan disediakan Mula-mula, mari kita lihat contoh mudah: #include&l.

Bagaimana untuk menyelesaikan ralat sintaks C++: 'ungkapan utama yang dijangkakan sebelum token '*'? Bagaimana untuk menyelesaikan ralat sintaks C++: 'ungkapan utama yang dijangkakan sebelum token '*'? Aug 25, 2023 pm 07:16 PM

Cara menyelesaikan ralat sintaks C++: 'expectedprimary-expressionbefore'*'token' Dalam proses pembelajaran pengaturcaraan C++, kita sering menghadapi pelbagai ralat sintaks. Salah satu ralat biasa ialah 'expectedprimary-expressionbefore'*'token'. Ralat ini biasanya berlaku apabila menggunakan penunjuk, terutamanya kerana kami menggunakan sintaks yang salah di suatu tempat atau terlupa

Bagaimana untuk menyelesaikan ralat sintaks C++: 'dijangka')' sebelum '&' token'? Bagaimana untuk menyelesaikan ralat sintaks C++: 'dijangka')' sebelum '&' token'? Aug 26, 2023 pm 08:13 PM

Bagaimana untuk menyelesaikan ralat sintaks C++: 'dijangka')'sebelum'&'token'? Dalam proses pengaturcaraan C++, pelbagai ralat sintaks sering dihadapi. Salah satu ralat biasa ialah: "dijangka')'sebelum'&'token". Ralat ini biasanya berlaku dalam senarai parameter fungsi atau kaedah, menunjukkan bahawa pengkompil tidak dapat memahami kurungan kanan yang hilang sebelum pembolehubah atau jenis tertentu. Di bawah saya akan terperinci bagaimana untuk menyelesaikan ralat ini dan memberikan beberapa kod

Bagaimana untuk menyelesaikan ralat sintaks C++: 'id tidak layak dijangka sebelum token '<'? Bagaimana untuk menyelesaikan ralat sintaks C++: 'id tidak layak dijangka sebelum token '<'? Aug 26, 2023 pm 10:46 PM

Bagaimana untuk menyelesaikan ralat sintaks C++: 'expectedunqualified-idbefore'&lt;'token'? Dalam pembangunan C++, kita sering menghadapi pelbagai ralat. Salah satu ralat biasa ialah 'expectedunqualified-idbefore'&lt;'token'. Ralat ini biasanya bermakna pengecam hilang di suatu tempat, tetapi pengkompil menemui simbol '&lt;'. Kesilapan macam ni

Bagaimana untuk menyelesaikan ralat sintaks C++: 'pemula dijangka sebelum token '<'? Bagaimana untuk menyelesaikan ralat sintaks C++: 'pemula dijangka sebelum token '<'? Aug 25, 2023 pm 06:30 PM

Bagaimana untuk menyelesaikan ralat sintaks C++: 'expectedinitializerbefore'&lt;'token'? Dalam pengaturcaraan C++, pelbagai ralat sering dihadapi. Salah satu ralat biasa ialah "expectedinitializerbefore'&lt;'token". Ralat ini biasanya berlaku apabila menggunakan kelas templat atau fungsi templat, dan anda perlu memberi perhatian kepada beberapa butiran sintaks tertentu. Dalam artikel ini, kita akan membincangkan asal usul ralat ini

Bagaimana untuk menyelesaikan ralat sintaks C++: 'dijangka')' sebelum ';'? Bagaimana untuk menyelesaikan ralat sintaks C++: 'dijangka')' sebelum ';'? Aug 27, 2023 am 11:04 AM

Cara menyelesaikan ralat sintaks C++: 'dijangka')'sebelum';'token' Pengenalan: Dalam pengaturcaraan C++, ralat sintaks adalah masalah biasa. Apabila pengkompil menghadapi ralat sintaks, ia mengeluarkan mesej ralat untuk menunjukkan perkara yang salah. Artikel ini akan menumpukan pada ralat biasa, iaitu "dijangka')'sebelum';'token" dan menyediakan penyelesaian. Mesej ralat dan punca Apabila pengkompil menghadapi ralat ini, ia sama ada di suatu tempat dalam kod

See all articles