Toon posts:

[C++] error LNK2001: unresolved external symbol "private: st

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo C++ programeurs,

ik zit met het probleem dat ik de volgende linking error krijg:

error LNK2001: unresolved external symbol "private: static int ProjectDialoog::resource" (?resource@ProjectDialoog@@0HA)

ik heb al een tijd lang gezocht op google en hier op het forum, maar ik kan daartussen geen oplossing vinden voor mijn probleem.

hier volgt een deel van mijn code van ProjectDialoog:

ProjectDialoog.h
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class ProjectDialoog  
{
private:
    HWND m_hWnd;
    HINSTANCE m_hInst;
    static HWND m_hDlg;
    static char m_Project[40];
    static char m_Activiteit[40];
    static char m_Notitie[1024];
    static char m_Datum[10];
    static string m_Status;
    static bool notOpen;
    static bool GetData(HWND);
    bool FillDialog();

    static int resource;

public:
    ProjectDialoog(HINSTANCE, HWND);
    virtual ~ProjectDialoog();
    static void setProjMan(CProjectManager*);
    void setTree(CTreeView*);
    static char *getProject();
    static char *getNotitie();
    static DATUM getDatum();
    static STATUS &getStatus();
    
    void Show(int);
    
    static BOOL CALLBACK DlgProc(HWND hdDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
};


ProjectDialoog.cpp
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
void ProjectDialoog::Show(int resource)
{
    if(notOpen)
    {
        m_hDlg = CreateDialog(m_hInst, MAKEINTRESOURCE(resource), m_hWnd, ProjectDialoog::DlgProc);
        notOpen = false;
        this->resource = resource;
        ShowWindow(m_hDlg, SW_SHOW);
    }
}

BOOL CALLBACK ProjectDialoog::DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
    case WM_INITDIALOG:
        m_hDlg = hDlg;
        ::SetFocus(hDlg);
    break;

    case WM_COMMAND:
        switch(LOWORD(wParam))
        {
            case IDOK:
            {
                if(GetData(hDlg))
                {
                    notOpen = true;

                    if(resource == 130)
                    {
                        if(!projManager->addProject(getProject(), getDatum(), getNotitie(), getStatus()))
                        {
                            MessageBox(hDlg, "Project bestaad al\n\nGeef het project een andere naam", NULL, NULL);
                            break;
                        }
                    }
                    else
                    {
                        projManager->getProject(getProject())->setDeadline(getDatum());
                        projManager->getProject(getProject())->setNotitie(getNotitie());
                        projManager->getProject(getProject())->setStatus(getStatus());
                    }

                    treeView->DeleteAll();
                    treeView->Update();
                    ::EndDialog(hDlg, 1);
                    
                }
            }
            break;


alvast bedankt

groets,

Alex

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Je hebt je static member niet gedefineerd.

Dus in je .cpp file nog even een regel: int ProjectDialoog::resource = 0;

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-05 14:03

curry684

left part of the evil twins

Een static class member is niet onderdeel van de class zelf en wordt dus niet geinstantieerd met een class instance. Je zult deze zelf elders moeten definieren. Plaats de volgende code bovenin je cpp-file:
C++:
1
int ProjectDialoog::resource = 0;

En het is opgelost, omdat er dan wel storagespace voor het ding bestaat :)

edit:
traag curry, traaaaag

[ Voor 7% gewijzigd door curry684 op 19-06-2005 13:08 ]

Professionele website nodig?


Verwijderd

Topicstarter
zo iets simpels....

het werkt nu... hartelijk bedankt

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 04-05 13:09
curry684 schreef op zondag 19 juni 2005 @ 13:08:
Een static class member is niet onderdeel van de class zelf en wordt dus niet geinstantieerd met een class instance. Je zult deze zelf elders moeten definieren. Plaats de volgende code bovenin je cpp-file:
C++:
1
int ProjectDialoog::resource = 0;

En het is opgelost, omdat er dan wel storagespace voor het ding bestaat :)

edit:
traag curry, traaaaag
Reken het jezelf niet aan. Jullie reageren in dezelfde minuut, en jij wijzigt je reply ook nog in dezelfde minuut B)

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Ik ben gewoon sneller :P kan jij ook niets aan doen ;)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Zoijar schreef op zondag 19 juni 2005 @ 18:19:
Ik ben gewoon sneller :P kan jij ook niets aan doen ;)
Je post is dan ook 3x korter. O-) Naja, ontopic dan maar weer. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 04-05 13:09
Oplossing is toch al gegeven. Al 2x zelfs ;)

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack

Pagina: 1