用静态数组覆盖指针属性

Override a pointer attribute with a static array

本文关键字:指针 属性 覆盖 数组 静态      更新时间:2023-10-16
typedef struct chlnglck{
    friend struct chlnglck_8;
    friend struct chlnglck_10;
    friend struct chlnglck_12;
    chlng nb;
    uint64_t wt;
}chlnglck;
struct chlnglck_8 : chlnglck{
    char ress[255];
    chlnglck_8();
};
struct chlnglck_10 : chlnglck{
    char ress[1024];
    chlnglck_10();
};

这是我的代码。我想知道如何在父类chlnglck中提及ress属性。

有没有办法或不知道我必须在子类中使用固定大小的数组?编辑:我的意思是:我最终可以在父级中声明一个指针,以通过子级中的固定大小数组覆盖它。(似乎不太可能,但不得不作为最终线索询问(

请不要std::string

你也许可以使用模板来解决它:

template<size_t N>
struct chlnglck
{
    chlng nb;
    uint64_t wt;
    std::array<char, N> ress;
};
struct chlnglck_8 : chlnglck<256> {};
struct chlnglck_10 : chlnglck<1024> {};
typedef struct chlnglck{
    friend struct chlnglck_8;
    friend struct chlnglck_10;
    friend struct chlnglck_12;
    uint64_t wt;
    char *ress;
}chlnglck;
struct chlnglck_8 : chlnglck{       
    chlnglck_8(){
        ress = new char[255];
    }
    ~chlnglck_8(){
        delete []ress;
    }
};
struct chlnglck_10 : chlnglck{        
    chlnglck_10(){
        ress = new char[1024];
    }
    ~chlnglck_10(){
        delete []ress;
    }
};