gpt4 book ai didi

c++ - 在头文件中声明一个结构,以供 .cc 文件访问和填充

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:20:13 24 4
gpt4 key购买 nike

我正在尝试在头文件中定义一个结构,以便以后可以由不同的 .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

其中第二个错误中的location是访问变量的地方。

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

我尝试了几种方法:

TestStruct* test::myStruct_;

myStruct_ = test::TestStruct;

但我只是得到编译错误......

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

最佳答案

您的错误是由于在没有类的实际实例的情况下尝试访问类 testmyStruct_ 成员造成的。正确执行此操作的一种方法是在函数内部的堆栈上声明 test 的实例,如下所示:

test instance;
instance.myStruct_.var1_ = value1;
instance.myStruct_.var2_ = value2;
instance.myStruct_.var3_ = value3;

关于c++ - 在头文件中声明一个结构,以供 .cc 文件访问和填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27430324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com