2016-10-30 57 views
0

我有這個錯誤,讓我在所有的程序中都困擾着我,這可能只是我忽略了一些東西。VC++類。靜態變量錯誤無法解析的外部符號

哪裏出現該錯誤代碼片段:

class myClass { 
private: 
    int x; 
public: 
    static int getX() { 
     x = 10; 
     return x; 
    } 
}; 

int main() { 
    cout << myClass::getX() << endl; 
    return 0; 
} 

我得到的錯誤說:

錯誤解析外部符號

什麼causeing這或有什麼不好我的代碼?

+0

只對靜態變量使用靜態getter。 –

回答

0

裏面你試圖訪問使用將無法正常工作的靜態方法非靜態變量的類。您可以將私有成員變量x變爲靜態,並在類之外進行初始化。那麼你的例子可以看起來像:

#include <iostream> 
class myClass { 
private: 
    static int x; 
public: 
    static int getX() 
    { 
     x = 10; 
     return x; 
    } 
}; 
int myClass::x = 0; 

int main() { 
    std::cout << myClass::getX() << std::endl; 
    return 0; 
} 
+0

Thx。我acctualy在我做的例子中忘記了靜態int(在我的程序中它是acctualy是一個靜態int)。但我忘記了int myClass :: x = 0;在我的.cpp文件(我的頭文件中的類),所以它仍然工作! – sladet

2

A staticfoo的成員函數沒有與該類的對象關聯(沒有指針this)。

如何在沒有對象的情況下訪問foo的成員變量?除非他們自己是static,否則你不能。

您必須首先創建一個foo實例。

你的情況:

static int myClass::getX() { 
    myClass obj; 
    obj.x = 10; 
    return obj.x; 
} 
+0

我仍然收到錯誤消息。 – sladet

+0

@sladet在這種情況下,您收到的錯誤不是來自您發佈的代碼。用完整的錯誤信息編輯您的問題。無法解析的外部符號。那是哪個符號? – DeiDei

相關問題