inline klassenfunc im namespace?
-
hi,
irgendwie krieg ich das nicht hin, eine Klassenmethode außerhalb der Klasse , innerhalb eines user namespaces mit inline zu definieren. Lasse ichs namespace weg, funktioniert das. Geht bei der Verwendung von namespaces nur eine implizite Methodendefinition?//file.h namespace ha { class b { public: void hu() const; }; }; //file.cpp #include "file.h" using namespace ha //inline geht hier nich, Funktion is dann nich aufgelöst ? void b::hu() const {}dank im vorraus
chris
-
using taugt nur etwas, wenn du den Namen verwenden willst. Die Definition muß natürlich wieder im richtigen Namespace angegeben werden:
namespace ha { class b { public: void hu() const; }; }; //file.cpp #include "file.h" namespace ha { void b::hu() const {} }
-
hi, es geht so auch nicht, wenn ich eine Methode innerhalb eines namespaces inline definieren will.
namespace dernamespace { inline void klasse::func() {} ; //EndnamespDer Compiler sagt: 1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: long __thiscall ......
entferne ich inline, ist alles in Ordnung.
-
Erstmal beendet man einen Namespace nicht mit dem Semikolon

Und zweitens kannst du inline-Funktionen nicht in eigene CPP-Files auslagern (inline sagt dem Compiler, daß er den Quelltext direkt anstelle des Funktionsaufrufes einsetzen soll - aber dazu braucht er den Quelltext dort, wo die Funktion verwendet werden soll)