用于在另一个文件中使用的结构的初始化值
Initialise values of a struct for use in another file
,所以我有我的类Test.h,其中有一个结构。
Class Test{
private:
struct Data
{
char *first;
int number;
int count;
};
Data *myStruct;
我正在尝试在用户中使用mystruct.c initialiser。
//User.C
#include "Test.H"
Test::Test(const char *alp){
myStruct.number = 0;
}
我得到了Valgrind的分割故障和错误。我最初认为这是由于数据* my -struct属于私有的,但是在以下编写这样的功能之后:
Data getStruct(){
return myStruct;
}
当我在用户中使用它时,它仍然会给我错误。c
您需要构造struct
,然后才能对其进行任何操作。调用默认构造函数将将其字段缩短为0。
您已经大写了class
,那是错误的。我也看不到它必须是指针的原因,所以我将其删除。最后,我在Data
中添加了一个破坏者,以便将first
删除。我认为这是一个CSTRING,所以我使用了delete[]
。如果是其他的,请以任何合适的方式删除它。
如果您必须有指针,请修改构造函数以使用new
,delete
在Destructor ~Test()
中使用struct
,并使用->
操作员的myStruct
的参考成员。
class Test {
public:
struct Data {
const char* first;
int number;
int count;
~Data() {
delete[] first;
}
};
Test(const char *alp) {
// Default constructor initialises struct's fields to 0.
myStruct = Data();
myStruct.count = 7;
}
private:
Data myStruct;
};
相关文章:
- 多成员Constexpr结构初始化
- 为什么用结构初始化数组需要指定结构名称
- 使用指定的初始值设定项聚合匿名结构初始化
- 不同的类或结构初始化方法之间的性能差异是什么?
- 如何在结构初始化中获取成员C++
- C++正确的结构初始化
- 使用大括号进行结构初始化
- 内部结构初始化不起作用 - C++
- 使用嵌套结构初始化并集
- 使用匿名结构初始化联合
- 结构初始化语法
- 结构初始化的 C++ 向量
- C++嵌套结构初始化和访问成员
- 结构初始化中的常量正确性
- 使用 C++ 中的自定义元素进行 Const 结构初始化
- 如何在结构C++初始化内置数组
- Visual C++ 模板类成员结构初始化语法糖
- C++结构初始化
- C 在结构初始化过程中带有内部阵列的奇怪错误
- 此C/C 的结构初始化器如何使用足够的字段工作