Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Selesaikan ralat kompilasi C++: 'definisi semula 'pembolehubah', bagaimana untuk menyelesaikannya?

Selesaikan ralat kompilasi C++: 'definisi semula 'pembolehubah', bagaimana untuk menyelesaikannya?

WBOY
WBOYasal
2023-08-26 08:28:592554semak imbas

解决C++编译错误:'redefinition of 'variable'',如何解决?

Selesaikan ralat kompilasi C++: 'takrif semula 'pembolehubah', bagaimana untuk menyelesaikannya?

Apabila kita menulis program C++, pelbagai ralat mungkin berlaku. Salah satu ralat biasa ialah 'takrif semula 'pembolehubah'. Ralat ini bermakna kami cuba mentakrifkan pembolehubah yang sama beberapa kali dalam skop yang sama. Ini tidak dibenarkan dalam C++ kerana ia mewujudkan konflik penamaan dan kesamaran. Seterusnya, kami akan memperincikan cara menyelesaikan ralat kompilasi ini dan memberikan beberapa contoh kod.

Pertama, mari kita lihat situasi biasa yang menyebabkan ralat 'takrif semula 'pembolehubah'. Katakan kita mentakrifkan pembolehubah dalam atur cara dan mentakrifkan pembolehubah yang sama sekali lagi dalam skop yang sama, ralat ini akan dicetuskan. Contohnya:

#include <iostream>

int main() {
    int num = 10;
    int num = 20; // 错误!重复定义了变量num

    std::cout << num << std::endl;

    return 0;
}

Dalam kod di atas, kami mentakrifkan nombor pembolehubah dua kali dalam fungsi utama Cara penulisan ini salah dan akan menyebabkan ralat kompilasi 'takrif semula 'num'. Untuk menyelesaikan masalah ini, kami mempunyai kaedah berikut:

1. Padamkan definisi pembolehubah pendua

Penyelesaian yang paling langsung ialah memadam definisi pembolehubah pendua. Dalam erti kata lain, hanya definisi pembolehubah pertama dikekalkan dan definisi pendua seterusnya dipadamkan. Ubah suai kod di atas seperti berikut:

#include <iostream>

int main() {
    int num = 10; // 只保留第一次定义

    std::cout << num << std::endl;

    return 0;
}

Dengan mengalih keluar definisi pembolehubah pendua, kami menyelesaikan ralat 'definisi semula 'num'.

2. Gunakan nama pembolehubah yang berbeza

Penyelesaian lain ialah menggunakan nama pembolehubah yang berbeza untuk mengelakkan definisi pendua. Ubah suai kod di atas seperti berikut:

#include <iostream>

int main() {
    int num1 = 10;
    int num2 = 20; // 使用不同的变量名

    std::cout << num1 << std::endl;

    return 0;
}

Dengan menggunakan nama pembolehubah yang berbeza, kami mengelakkan ralat 'takrif semula 'pembolehubah'.

3. Gunakan ruang nama

Jika kita perlu mentakrifkan pembolehubah yang sama dalam ruang nama yang berbeza, kita boleh menggunakan ruang nama untuk menyelesaikan konflik penamaan. Contohnya adalah seperti berikut:

#include <iostream>

namespace ns1 {
    int num = 10;
}

namespace ns2 {
    int num = 20;
}

int main() {
    std::cout << ns1::num << std::endl;
    std::cout << ns2::num << std::endl;

    return 0;
}

Dalam kod di atas, kita berada di ns1ns2两个命名空间中分别定义了相同的变量num. Dengan menggunakan ruang nama untuk pembezaan, kami mengelakkan 'takrif semula ralat 'num'.

Untuk meringkaskan, kaedah untuk menyelesaikan ralat kompilasi C++ 'takrif semula 'pembolehubah' termasuk memadamkan definisi pembolehubah pendua, menggunakan nama pembolehubah yang berbeza dan menggunakan ruang nama. Kita harus mengikut konvensyen penamaan yang baik semasa menulis kod dan mengelakkan definisi semula pembolehubah untuk mengurangkan berlakunya ralat penyusunan. Harap artikel ini membantu anda menyelesaikan masalah ralat 'takrif semula' 'pembolehubah'.

Atas ialah kandungan terperinci Selesaikan ralat kompilasi C++: 'definisi semula 'pembolehubah', bagaimana untuk menyelesaikannya?. 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