用静态数组覆盖指针属性

Override a pointer attribute with a static array

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();
};

这是我的代码。我想知道如何在父 class chlnglck.

中提及 ress 属性

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

没有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;
    }
};