2012-03-29 166 views
0

我有一個靜態變量,我用它作爲計數器和非靜態版本的變量,用於在某些事件中保存計數器的值。下面是一些代碼:比較非靜態函數中的靜態和非靜態整數

頁眉:

static int UndoID; 
int UndoRedoID; 

void SetUnsavedChanges(); 

類:

在類的各個部分我嘗試這樣:

UndoRedoID = UndoID; 

我試着像其他的東西:

UndoRedoID = myClass:UndoID; 

例的對比:

void myClass::SetUnsavedChanges() 
{ 
    if (UndoRedoID != UndoID) 
    { 
     cout << "Unsaved"; 
    } 
    else 
    { 
     cout << "Saved"; 
    } 
} 

這使我得到鏈接錯誤,如:

Undefined symbols: 
    "myClass::UndoID", referenced from: 
    myClass::SetUnsavedChanges()  in myClass_lib.a(myClass.o) 
    ... 

謝謝您的幫助:)

回答

2

您需要定義靜態成員的數據,外類如下:

//this should be done in .cpp file 
int myClass::UndoID; 

讓我添加一個e xample:

//X.h 
class X 
{ 
    static int s; //declaration of static member 
}; 

然後在X.cpp文件,你應該這樣做:

//X.cpp 
#include "X.h" 

int X::s; //definition of the static member 
+0

一些初始化也將是一個不錯的主意。 – 2012-03-29 15:23:06