2014-01-11 54 views
0

我想以此來訪問我的系統溫度:http://www.alcpu.com/CoreTemp/developers.html如何訪問非靜態數據成員在C++中

,你可以看到,數據結構是這樣的:

typedef struct core_temp_shared_data 
{ 
    unsigned int uiLoad[256]; 
    unsigned int uiTjMax[128]; 
    unsigned int uiCoreCnt; 
    unsigned int uiCPUCnt; 
    float  fTemp[256]; 
    float  fVID; 
    float  fCPUSpeed; 
    float  fFSBSpeed; 
    float  fMultiplier;  
    char  sCPUName[100]; 
    unsigned char ucFahrenheit; 
    unsigned char ucDeltaToTjMax; 
}CORE_TEMP_SHARED_DATA,*PCORE_TEMP_SHARED_DATA,**PPCORE_TEMP_SHARED_DATA; 

不過,我對於C++編程來說是新手,並不瞭解如何訪問其中某個東西的數據。我曾經嘗試這樣做:

cout << core_temp_shared_data::fTemp; 

,但它只是吐出了這個錯誤代碼:

error: invalid use of non-static data member 'core_temp_shared_data::fTemp'| 

什麼是有效的使用?

+0

聲明指針'PCORE_TEMP_SHARED_DATA'和指針到 - 指針'PPCORE_TEMP_SHARED_DATA' * typedef * -s不會給你帶來太多實際上可以讓你的代碼更少可讀性和不易理解。在閱讀你的代碼時,很重要的一點是要快速瞭解什麼是指針...... –

+0

我沒有把它放在那裏。圖書館的開發人員做到了。 – user1803425

回答

1

創建該類型的新對象,將成員設置爲有意義的值,並通過該對象訪問它。

core_temp_shared_data obj; 
obj.fMultiplier = 0; 
std::cout << obj.fMultiplier; 
+0

我已將該代碼修改爲: core_temp_shared_data obj; obj.fTemp = 0; cout << obj.fTemp; 但它只是吐出這個錯誤: C:\ Users \ Ryan \ Dropbox \ C++ \ Serial_System_Monitor \ main.cpp | 7 |錯誤:在'int'賦值爲'float [256]'時不兼容的類型| – user1803425

+0

這不起作用。每一次我運行它只是打印0.我需要能夠從中檢索信息,這只是每次都給我同樣的東西。 – user1803425

+0

@ user1803425你剛剛用'= 0'複製了我的代碼嗎? –

1

你需要像C.

CORE_TEMP_SHARED_DATA shared_data; 
shared_data.fVID = 0.5f; 

或者通過動態分配創建結構/類的一個實例:

PCORE_TEMP_SHARED_DATA shared_data = new CORE_TEMP_SHARED_DATA; 
shared_data->fVID = 0.5f; 
相關問題