mam podobny scenariusz jak określono poniżej:Jak uniknąć konfliktów zmiennej/funkcja z dwóch bibliotek w C++
Mam jeden plik header first.h
Posiada funkcję:
char* getName();
i powiązany plik cpp first.cpp
konieczności definicja
char* getName(){return "first";}
funkcja i drugi plik header second.h to ma Funkcja:
char* getName();
skojarzony plik cpp second.cpp
konieczności definicja funkcji
char* getName(){return "second";}
Teraz jest main()
funkcja:
#include "first.h"
#include "second.h"
int main(){
return 0;
}
kiedy obejmują te .h
plików, kompilator daje błąd Pod funkcja getName()
, ponieważ jest w konflikcie.
Jak pozbyć się tego problemu, bez zmiany .h files
Czy funkcje są wbudowane, czy prawdziwe nagłówki zawierają tylko deklaracje? To dlatego nigdy nie rozumiem, dlaczego C nie ma przestrzeni nazw. Bez szablonów i przeciążania nie ma nic skomplikowanego i rozwiążą wszystkie konflikty nazewnictwa i przestaną używać przestarzałych prefiksów. – Jens
Czy to jest 'C' lub' C++ '? Dla C++ skorzystaj z tego samouczka: http://www.tutorialspoint.com/cplusplus/cpp_namespaces.htm –
nie możesz pozbyć się tej sytuacji bez zmiany tych plików nagłówkowych w c. Jeśli zmienisz jedną z metod w plikach nagłówkowych jako statyczną, będzie kompilować lub używać przestrzeni nazw w języku C++ dla tych metod. jeśli chcesz użyć jednego z plików nagłówkowych i nie chcesz zmieniać nagłówków, użyj #ifndef structure do włączenia jednego z plików nagłówkowych. –