Laat mij beginnen met te stellen dat ik normaal gesproken voornamelijk in C programmeer, en derhalve nooit eerder zelf namespaces heb gemaakt.
De situatie is als volgt.
Ik heb een set functies die met hardware communiceren. Deze heb ik ondergebracht in een .cpp file met een bijbehorende .h. Omdat de functienamen nogal generiek zijn, dacht ik ze onder te brengen in een namespace, zodat ik geen conflicten krijg.
MSSIRadio.h:
MSSIRadio.cpp:
Ik gebruik deze functies elders, door MSSIRadio.h te includen. Ik krijg dan echter meldingen dat some_var al gedefinieerd is.
Ik heb er omheen gewerkt door some_var in een functie onder te brengen, maar ik heb het vermoeden dat dat niet de aangewezen methode is.
Is mijn ontwerp fundamenteel fout?
Voor de volledigheid moet ik vermelden dat het complete ontwerp er meer zo uitziet:
Overigens, mijn ClassView in MS VS 2005 ziet er zo uit (een van de redenen waarom ik vermoed dat er iets fout zit):
De situatie is als volgt.
Ik heb een set functies die met hardware communiceren. Deze heb ik ondergebracht in een .cpp file met een bijbehorende .h. Omdat de functienamen nogal generiek zijn, dacht ik ze onder te brengen in een namespace, zodat ik geen conflicten krijg.
MSSIRadio.h:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
| #ifndef MSSIRADIO_H #define MSSIRADIO H namespace LLMSSIRadio { int some_var; int fpga_read( /* ... */); int fpga_write( /* ... */); // etc. } #endif |
MSSIRadio.cpp:
C++:
1
2
3
4
5
6
| #include "radio.h" int LLMSSIRadio::fpga_read( /* ... */) { // ... } // etc. |
Ik gebruik deze functies elders, door MSSIRadio.h te includen. Ik krijg dan echter meldingen dat some_var al gedefinieerd is.
Ik heb er omheen gewerkt door some_var in een functie onder te brengen, maar ik heb het vermoeden dat dat niet de aangewezen methode is.
Is mijn ontwerp fundamenteel fout?
Voor de volledigheid moet ik vermelden dat het complete ontwerp er meer zo uitziet:
code:
1
2
3
| Main.cpp : includes -> Wrapper.h Wrapper.cpp : includes -> Wrapper.h, MSSIRadio.h MSSIRadio.cpp : includes -> MSSIRadio.h |
Overigens, mijn ClassView in MS VS 2005 ziet er zo uit (een van de redenen waarom ik vermoed dat er iets fout zit):