Ik ben gister en vandaag de hele dag bezig geweest met pointers naar memberfuncties mbv van een guide. Ik had het helemaal zo geklopt zoals ik dacht dat het moet in mijn programma. Maar toen ik hem aanriep kreeg ik een paar errors waar ik helemaal niets van snapte. Omdat ik ze niet opgelost kreeg heb ik maar even snel een nieuw project gemaakt (in visual c++ 6.0) en daar even een zeer vereenvoudige versie van hoe ik dahct dat het zou moeten werken. Alleen wat krijg ik daar precies dezelfde error als bij mijn volledige programma.
Zou ik iets hebben vergeten aan te zetten/includen?
Error
Main.cpp
TMyClass.h
Zou ik iets hebben vergeten aan te zetten/includen?
Error
code:
1
2
3
4
5
6
7
8
9
10
| --------------------Configuration: testfunctionpointer - Win32 Debug-------------------- Compiling... main.cpp Linking... main.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall TMyClass::~TMyClass(void)" (??1TMyClass@@UAE@XZ) main.obj : error LNK2001: unresolved external symbol "public: __thiscall TMyClass::TMyClass(void)" (??0TMyClass@@QAE@XZ) Debug/testfunctionpointer.exe : fatal error LNK1120: 2 unresolved externals Error executing link.exe. testfunctionpointer.exe - 3 error(s), 0 warning(s) |
Main.cpp
C++:
1
2
3
4
5
6
7
8
9
10
11
12
| #include <iostream.h> #include "TMyClass.h" int main(int argc, char* argv[]) { float (TMyClass::*pt2Member)(float,char,char); TMyClass tmc; pt2Member = &TMyClass::DoIt; cout << (tmc.*pt2Member)(12,'a','b') << endl; return 0; } |
TMyClass.h
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| #ifndef _TMYCLASS_H_ #define _TMYCLASS_H_ class TMyClass { public: TMyClass(); virtual ~TMyClass(); float DoIt (float a, char b, char c) { cout << "TmYClass::DoIt" << endl; return a+b+c; } float DoMore (float a, char b, char c) { cout << "TMyClass::DoMore" << endl; return a-b-c; } private: }; #endif |