Her brokker min compiler sig over, at den ikke kender Object. Hvis jeg så skriver <class Object> i stedet, så er der ingen problemer. Hvorfor dog? Object ser sådan her ud: --- class Object { public: virtual void Draw(RECT* r, UINT msg = 0){} virtual ~Object(){} }; ---
Hvorfor vil du egentlig have en extern auto_ptr, auto_ptr laver et object der automatisk destructes når man går ud af scope, så vidt jeg kan se når den er extern vil den alligevel være global og derfor destructes når programmet ender, der må være noget jeg overser.
Jpk: - Nej, Object er ikke i et namespace. - Visual C++ .NET - error C2065: 'Object' : undeclared identifier error C2955: 'std::auto_ptr' : use of class template requires template argument list error C2955: 'std::auto_ptr' : use of class template requires template argument list
Segmose: Grunden til at jeg bruger extern, er at det foregår i en headerfil som bliver inkluderet af flere andre filer, dvs. jeg får linkerfejl hvis jeg sletter extern.
Okay, jeg har fundet ud af, at den .h-fil, som jeg lavede externen i, inkluderede object.h, som så igen inkluderede externens h. Hvis man lige byttede lidt om på .h-filerne, så kunne man udelade "class". Jeg ved godt at det lyder lidt rodet, men det er det også! :)
Jeg har faktisk allerede sådan en guard.. Jeg kan ikke helt gennemskue hvad problemet er, men det er nok fordi min kode er lidt uoverskuelig.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.