Rumah > pembangunan bahagian belakang > C++ > Bagaimana Menggunakan Pembolehubah Ahli sebagai Argumen Lalai dalam Fungsi Ahli C?

Bagaimana Menggunakan Pembolehubah Ahli sebagai Argumen Lalai dalam Fungsi Ahli C?

Susan Sarandon
Lepaskan: 2024-11-14 18:11:02
asal
824 orang telah melayarinya

How to Use a Member Variable as a Default Argument in C   Member Functions?

Menggunakan Pembolehubah Ahli sebagai Argumen Lalai dalam C

Apabila mencipta fungsi ahli dalam C , selalunya wajar untuk menjadikan hujah tertentu sebagai pilihan dan gunakan pembolehubah ahli sebagai nilai lalai. Walau bagaimanapun, ini boleh mencetuskan ralat kompilasi jika pembolehubah ahli tidak statik.

Pertimbangkan coretan kod berikut:

class Object
{
public:
    void MoveTo(double speed, Point position);

protected:
    Point initPos;
    Point currPos;
};

void Object::MoveTo(double speed, Point position = initPos)
{
    currPos = postion;
}
Salin selepas log masuk

Percubaan untuk menyusun kod ini akan menyebabkan mesej ralat: "tidak sah penggunaan ahli data bukan statik 'Objek::initPos'". Ini berlaku kerana ungkapan argumen lalai tidak boleh bergantung pada bukan ahli kelas.

Untuk menyelesaikan isu ini, anda perlu menggunakan dua lebihan kaedah MoveTo:

void Object::MoveTo(double speed)
{
    MoveTo(speed, initPos);
}

void Object::MoveTo(double speed, Point position)
{
    currPos = postion;
}
Salin selepas log masuk

Kaedah argumen tunggal memanggil kaedah dua hujah, menghantar nilai lalai. Ini membenarkan satu pelaksanaan MoveTo sambil mengekalkan kefungsian yang diingini untuk menggunakan pembolehubah ahli sebagai lalai.

Dengan mematuhi teknik ini, anda boleh menggunakan pembolehubah ahli secara berkesan sebagai argumen lalai dalam fungsi ahli C tanpa menghadapi kompilasi kesilapan.

Atas ialah kandungan terperinci Bagaimana Menggunakan Pembolehubah Ahli sebagai Argumen Lalai dalam Fungsi Ahli C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan