Rumah > pembangunan bahagian belakang > C++ > Ralat C++: pelbagai definisi, bagaimana untuk mengubah suainya?

Ralat C++: pelbagai definisi, bagaimana untuk mengubah suainya?

王林
Lepaskan: 2023-08-21 20:31:44
asal
1365 orang telah melayarinya

C++, sebagai bahasa pengaturcaraan peringkat tinggi, digunakan secara meluas terutamanya dalam sains komputer. Walau bagaimanapun, semasa menulis atur cara, kita sering menghadapi laporan ralat, seperti "takrifan berbilang Apa yang perlu kita lakukan pada masa ini?

Pertama sekali, kita perlu memahami mengapa "takrifan berbilang" berlaku. Dalam C++, jika kita mentakrifkan pembolehubah, fungsi atau kelas yang sama dalam fail yang berbeza, masalah "takrifan berbilang" akan berlaku.

Jadi apa yang perlu kita lakukan jika ini berlaku dalam program kita? Biasanya, terdapat dua penyelesaian.

Kaedah pertama ialah menggunakan "fail pengepala", iaitu, tulis kandungan definisi dalam fail berasingan, dan kemudian rujuk fail ini melalui arahan #include dalam fail yang diperlukan. Dengan cara ini, fail pengepala hanya perlu dirujuk sekali dalam setiap fail untuk mengelakkan masalah "takrifan berbilang".

Mengambil fungsi sebagai contoh, kita boleh mentakrifkan prototaip fungsi dalam fail pengepala, dan kemudian merujuk fail pengepala ini melalui arahan #include dalam fail yang diperlukan. Sebagai contoh, kita boleh mentakrifkan fungsi "int add(int a, int b);" dalam fail pengepala "function.h", dan kemudian merujuk fail pengepala ini dalam fail yang diperlukan dengan #include "function.h", dalam fail Hanya panggil fungsi "tambah(a, b)".

Contoh kod:

function.h:

#ifndef FUNCTION_H
#define FUNCTION_H

int add(int a, int b);

#endif
Salin selepas log masuk

function.cpp:

#include "function.h"

int add(int a, int b)
{
    return a + b;
}
Salin selepas log masuk

main.cpp:

#include <iostream>
#include "function.h"

int main()
{
    int a = 3, b = 5;
    std::cout << add(a, b) << std::endl;
    return 0;
}
Salin selepas log masuk

Apabila menggunakan "fail pengepala", fail pengepala hanya perlu dirujuk sekali dalam setiap fail gunakan fungsi "tambah(a, b)" dalam atur cara untuk mengelakkan masalah "takrifan berbilang".

Kaedah kedua ialah menggunakan "ruang nama". Melalui ruang nama, kita boleh menentukan nama yang berbeza untuk pembolehubah, fungsi atau kelas yang berbeza untuk mengelakkan masalah "takrifan berbilang" yang disebabkan oleh takrifan dengan nama yang sama.

Contoh kod:

namespace FirstNamespace {
    int value = 1;
}
 
namespace SecondNamespace {
    int value = 2;
}
 
int main()
{
    std::cout << FirstNamespace::value << std::endl;
    std::cout << SecondNamespace::value << std::endl;
    return 0;
}
Salin selepas log masuk

Dalam kod di atas, kami menentukan pembolehubah "nilai" dengan nama yang sama dalam ruang nama "FirstNamespace" dan "SecondNamespace". Apabila menggunakan, kami membezakan pembolehubah berbeza melalui ruang nama. Dengan cara ini, walaupun pembolehubah dengan nama yang sama ditakrifkan dalam fail yang berbeza, masalah "takrifan berbilang" boleh dielakkan melalui ruang nama.

Ringkasnya, apabila "takrifan berbilang" berlaku dalam program, kita boleh menggunakan "fail pengepala" atau "ruang nama" untuk menyelesaikan masalah ini. Kita perlu memilih kaedah yang sesuai mengikut situasi tertentu, dan berhati-hati untuk mengelakkan definisi dengan nama yang sama dalam program.

Atas ialah kandungan terperinci Ralat C++: pelbagai definisi, bagaimana untuk mengubah suainya?. 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