ich habe drei dateien:
Netclass.h: Funktionsprototypen (bzw. eigtl Methoden)
Netclass.cpp: Methoden
user.cpp: hier steht die main() die ausgeführt werden soll.
das problem ist: wenn ich den konstruktor direkt in die klasse packe,
meckert der linker nicht. wenn ich nur den prototypen in der klasse
angebe und den konstruktor in der datei Netclass.cpp realisiere, meint
der linker, er kennt die funktion nicht.
hier der relevante code:
user.cpp
1 | [...]
|
2 | #include "Netclass.h"
|
3 | [...]
|
4 | void user_main()
|
5 | {
|
6 | class Net Testnet = Net("Testnet");
|
7 | }
|
so funktioniert es:
netclass.h
1 | class Net
|
2 | {
|
3 | [...]
|
4 | Net(string Name){this->Name = Name;}
|
5 | [...]
|
6 | };
|
und so nicht:
netclass.h
1 | class Net
|
2 | {
|
3 | [...]
|
4 | Net(string Name);
|
5 | [...]
|
6 | };
|
netclass.cpp
1 | [...]
|
2 | #include "Netclass.h"
|
3 | [...]
|
4 | Net::Net(string Name)
|
5 | {
|
6 | this->Name = Name;
|
7 | }
|
ausführliche fehlermeldung:
Warning 1 warning LNK4042: object specified more than once; extras
ignored C:\HS\Sync\Semester
VII\ADS\Projekt\Sync\Jones\Debug\Netclass.obj 1 1 ADS_NET
Error 2 error LNK2019: unresolved external symbol "public:
__thiscall Node::Node(class std::basic_string<char,struct
std::char_traits<char>,class std::allocator<char> >)"
(??0Node@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@s
td@@@Z) referenced in function "void __cdecl user_main(void)"
(?user_main@@YAXXZ) C:\HS\Sync\Semester
VII\ADS\Projekt\Sync\Jones\user.obj ADS_NET
Error 3 error LNK1120: 1 unresolved externals
C:\HS\Sync\Semester VII\ADS\Projekt\Sync\Jones\Debug\ADS_NET.exe 1
1 ADS_NET
die zweite fehlermeldung bringt mir leider überhaupt nichts, da ich
einfach nicht raffe wieso er die funktion nicht kennt, intellisense
kennt sie jedenfalls
muss ich irgendwo ein extern hinklatschen?
die erste verstehe ich auch nicht. ich hab doch nur den prototypen sowie
die realisierung. wo soll da "more than once" sein?
das witzige ist auch, dass es bereits funktioniert hat und ich
eigentlich an einer komplett anderen stelle gearbeitet habe als der
fehler auftrat. einmal kam der fehler, ich hab "rebuild all" gemacht und
der fehler war weg. alles sehr dubios. "clean" hat auch nichts gebracht.
arbeite mit visual studio 2010.