2014-01-11 51 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; 
相关问题