c++ - 在 C++ 类中混合指向 const 结构的指针——在参数列表中声明一个结构?

标签 c++ pointers embedded constants rom

我正在使用 C++ 开发嵌入式硬件,我经常使用指向 const (ROM) 结构的指针来最小化对象大小。

当我得到一个传递给我的类构造函数的指针时,我希望编译器基于我传递的对象创建另一个 ROM 对象,但更改了一个或两个参数,然后调用父类构造函数 (Display_Element)。关于如何做到这一点的任何想法?

由于可以在参数列表中声明 const 字符串,所以我认为可能有一种方法也可以在参数列表中声明 const 结构。

我想做这样的事情,(这在 C++ 中是非法的)

Button::Button(const Colors_const* ecc, const Display_element_const* edc, const Element_const* eec, char* elabel,
    Display_element* eparent, Screen* escreen) :
      Display_element(ecc, cc,Display_element_const {
                        edc->xi+200,
                        edc->xf,
                        edc->yi,
                        edc->yf,
                        edc->font_size,
                        edc->image,
                        edc->image_x_offset,
                        edc->image_y_offset,
                        edc->label_x_offset,
                        edc->label_y_offset,
                        edc->mouse_down_ptr,
                        NULL,
                        edc->largura_borda_externa,
                        edc->borda_panel
                    },
                    eec,elabel,eparent,escreen) {

    flags.largura_borda = 2;
    //flags.largura_borda_externa = 3;
    flags.borda_light_shadow = true;
    flags.sliding_text = true;
    flags.dont_paint_on_click = false;
}

谢谢

最佳答案

好吧,看来我想做的事情真的是不合法的,在C中是做不到的。但是哲学上我一直在问自己:我是否可以分配一个写在里面的const char[n]一个参数列表,例如 fn(...,"The brow dog",...) 为什么不以相同的方式分配 const 结构?如果有人知道答案,请发布!

我找到的解决方法是以规范的方式进行:声明一个 const 结构,然后将适当的指针分配给该结构(我首先想在 Display_element 函数中完成的事情)。它解决了我的问题,但没有解决我一直试图提出的概念性问题...

const Display_element_const new_ec = {
        edc->xi+200,
        edc->xf,
        edc->yi,
        edc->yf,
        edc->font_size,
        edc->image,
        edc->image_x_offset,
        edc->image_y_offset,
        edc->label_x_offset,
        edc->label_y_offset,
        edc->mouse_down_ptr,
        NULL,
        edc->largura_borda_externa,
        edc->borda_panel
    };


Button::Button(const Colors_const* ecc, const Display_element_const* new_edc, const Element_const* eec, char* elabel,
    Display_element* eparent, Screen* escreen) :
      Display_element(ecc, edc,eec,elabel,eparent,escreen) {
    //previously dc = edc, assigned inside Display_element fn
    dc = &new_ec;

关于c++ - 在 C++ 类中混合指向 const 结构的指针——在参数列表中声明一个结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15165294/

相关文章:

python - 我们可以使用Microsoft SEAL/PySEAL库对加密数据进行除法运算吗

c - 从c中的指针窃取两位

c - 警告 : assignment makes pointer from integer without a cast [-Wint-conversion]

c - 使用 3 轴加速度计和陀螺仪获取方向

c++ - 使用 GCC 或/和 IAR 编译时如何禁用 double 学?

audio - 我是否需要我的编解码器为 ALSA?

c++ - 将指向 char* 数组的指针传递给函数以在 Arduino 上操作值

c++ - 如何使用 GitHub 进行 C++ 软件的自动发布/夜间发布?

c++ - 线程安全和 block 写入大小

c++ - 无法创建对类的新实例的引用