用于在另一个文件中使用的结构的初始化值

Initialise values of a struct for use in another file

本文关键字:结构 初始化 另一个 文件 用于      更新时间:2023-10-16

,所以我有我的类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[]。如果是其他的,请以任何合适的方式删除它。

如果您必须有指针,请修改构造函数以使用newdelete在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;
};