我正在尝试在头文件中定义一个结构,以便稍后可以使用不同的.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;
但我刚收到编译错误......
有什么建议吗?提前谢谢!
答案 0 :(得分:1)
您的错误是由于尝试访问类myStruct_
的{{1}}成员而没有该类的实际实例而导致的。正确执行此操作的一种方法是在函数内的堆栈上声明test
的实例,如下所示:
test
答案 1 :(得分:0)
您尚未实例化对象" test"是一种类,而不是类的实例化。试试这个:
test myTest;
myTest.myStruct_.var1_ = value;