FfnolisMedlem sedan sep. 200162 inlägg Frågan#1 Tänkte börja från scratch med windowsprogrammering... hittade lite exempel som man kan leka med men när jag gör:
// main.cpp
#include "CMain.h"
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
CMain* p_main = CMain::getInstance();
return p_main-\>init(hInst, lpCmdLine, nCmdShow);
}
//CMain.h
#ifndef _CMain_
#define _CMain_
#include <windows.h>
class CMain
{
public:
int init( HINSTANCE hInst, LPSTR lpCmdLine, int nCmdShow );
static LRESULT CALLBACK WindowProc( HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam );
static CMain *getInstance() { return &m_instance; }
private:
static CMain m_instance;
CMain( void ){}
};
#endif //_CMain_
får jag felet:
Main.obj : error LNK2001: unresolved external symbol "private: static class CMain CMain::m_instance" (?m_instance@CMain@@0V1@A)
Debug/Firepower.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Hjälp?
BBeatboxMedlem sedan okt. 20013 217 inlägg Visst borde..
static CMain m_instance;
vara...
static CMain* m_instance;
???
FfnolisMedlem sedan sep. 200162 inlägg nopes det ska det inte vara... det är jag hundra på...
BBeatboxMedlem sedan okt. 20013 217 inlägg Försöker du göra en singelton ?
BBeatboxMedlem sedan okt. 20013 217 inlägg Annars brukar man implemetera en singelton så här :
Deklarationen av klassen.
class Singleton {
public:
static Singleton* Instance();
void foo(void);
protected:
Singleton();
private:
static Singleton* m_pInstance;
};
Implementationen...
Singleton* Singleton::m_pInstance = 0;
Singleton* Singleton::Instance () {
if (m_pInstance == NULL)
m_pInstance = new Singleton;
return m_pInstance ;
};
Anropet ser ut så här :
...
Singleton::Instance()->foo();
...
FfnolisMedlem sedan sep. 200162 inlägg njaä... inte riktigt... hade glömt att skriva
CMain CMain::m_instance;
i .cpp filen... *suck*
men tack i alla fall