gpt4 book ai didi

c++ - 使用 const 指针初始化 const 结构

转载 作者:太空狗 更新时间:2023-10-29 21:39:06 27 4
gpt4 key购买 nike

我想从传递给函数的 const 参数形成一个结构。由于参数是常量,我想结构也必须是常量。但是,它不适用于指针。

以下代码编译(MinGW 4.9.2 32bit)

struct structType_t {
int b;
};

void func1(const int b) {
const structType_t s={b}; // invalid conversion from 'const int*' to 'int*' [-fpermissive]

// do something with s;
}

但是对于指针它不会:

struct structType_t {
int* b;
};

void func1(const int* b) {
const structType_t s={b}; // invalid conversion from 'const int*' to 'int*' [-fpermissive]

// do something with s;
}

为什么编译器试图在这里丢弃 const?那么如何使用 const 指针来初始化 const 结构呢?

最佳答案

如果你改变你的结构来保存一个const int*,你可以用它来存储传递给函数的const int*,不管你的 s 是否为 const

struct structType_t {
const int* b;
};

void func1(const int* b) {
const structType_t s={b};
// or
structType_t s2={b};

// do something with s or s2 ...
}

关于c++ - 使用 const 指针初始化 const 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33759551/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com