在头文件中声明一个结构,以便由.cc文件访问和填充

时间:2014-12-11 18:54:51

标签: c++

我正在尝试在头文件中定义一个结构,以便稍后可以使用不同的.cc文件。

我定义该类的标题如下:

#ifndef test_h
#define test_h

class test
{

public:
struct TestStruct
{
    Float_t var1_;
    Float_t var2_;
    Float_t var3_;
} myStruct_;

};


#endif

在.cc文件中我包含头文件,我试图访问这个结构的变量,以便用如下的值填充它们:

test::myStruct_.var1_ = value1;
test::myStruct_.var2_ = value2;
...

执行此操作时,我收到以下编译器错误:

test.h:23:3:error: invalid use of member 'test::myStruct_' in static member function

test.cc:449:39: error: from this location 

第二个错误中的位置是访问变量的位置。

据我所知,在其他一些帖子中,我必须以某种方式使.cc文件知道test.h中定义的这种结构的存在。

我试过几种方法:

TestStruct* test::myStruct_;

myStruct_ = test::TestStruct;

但我刚收到编译错误......

有什么建议吗?提前谢谢!

2 个答案:

答案 0 :(得分:1)

您的错误是由于尝试访问类myStruct_的{​​{1}}成员而没有该类的实际实例而导致的。正确执行此操作的一种方法是在函数内的堆栈上声明test的实例,如下所示:

test

答案 1 :(得分:0)

您尚未实例化对象" test"是一种类,而不是类的实例化。试试这个:

test myTest;
myTest.myStruct_.var1_ = value;