Inline Konstruktor Fehler
-
Ich nutze VC++ 2008.
// CTest.h #ifndef CTEST_H #define CTEST_H class CTest { int a; public: CTest(); CTest(const int); }; #endif // CTest.cpp #include "ctest.h" inline CTest::CTest() { this->a = 0; } inline CTest::CTest(const int b) { this->a = b; } // main.cpp #include <iostream> #include "ctest.h" using std::cout; using std::endl; int main(int argc, char* argv[]) { CTest testconstructor; system("pause"); return 0; }Wenn ich das kompiliere, bekomme ich folgende Link Error
Error 1 error LNK2001: unresolved external symbol "public: __thiscall CTest::CTest(void)" (??0CTest@@QAE@XZ)
Error 2 fatal error LNK1120: 1 unresolved externalsWieso geht das nicht mit inline? was ist hier falsch?
-
inline geht beim ctor nicht.
Mach es doch so:class CTest { int a; public: CTest() : a ( 0 ) {} CTest(const int b) : a ( b ) {} };Nennt sich Initialisierungsliste und der richtige Weg, um (nicht-statische) Membervariablen zu initialisieren.
-
Laut Buch "C++ von A bis Z" sollen inline Konstruktor und Destruktor möglich sein.
Ich weiss das man auch mit Initialisierungliste auch machen kann, wollte aber die möglichkeit der verwendung von inline konstruktor kennen.
-
[quote="drakon"]inline geht beim ctor nicht.
[quote]
FALSCH----
@JnZn558:
Das Problem ist, dass du inline nicht verstanden hast.
Zieh die Definition der Funktionen (CTest::CTest etc.) mit ins HEADER File, dann wird es auch gehen.
Oder lass das inline weg.
Eins von beiden.
-
An inline muss sich der compiler sowiesi nicht halten, also lass es weg, der compiler weiß so gut wie immer besser wann er was inlined.
-
hustbaer schrieb:
drakon schrieb:
inline geht beim ctor nicht.
Jop, habe mich falsch ausgedrückt. Ich meinte auch das Schlüsselwort geht nicht. In der Klasse definiert ist es natürlich möglich.
-
hustbaer schrieb:
"Let there be Licht..."
http://lichttools.sourceforge.net/LOL, was is n das für n lächerliches tool.
-
[quote="hustbaer"][quote="drakon"]inline geht beim ctor nicht.
FALSCH
----
@JnZn558:
Das Problem ist, dass du inline nicht verstanden hast.
Zieh die Definition der Funktionen (CTest::CTest etc.) mit ins HEADER File, dann wird es auch gehen.
Oder lass das inline weg.
Eins von beiden.danke sehr, die ist die hilfreicheste antwort.