constexpr 指向 constexpr 数组的指针,不是常量表达式

问题描述 投票:0回答:1

我遇到编译错误,

constexpr char array[]={"my string"};

constexpr const char* ptr = array;

**(const char*)(& array) is not a constant expression**

我认为使用 constexpr const 并分配其他“constexpr”是可能的,但这里缺少一些东西。

第二行中的 **数组 ** 突出显示,因为它包含错误。

我已经尝试过了,

constexpr const char* ptr = array;
constexpr char* ptr = array;
constexpr char* const ptr = array;

BR

c++ pointers constexpr
1个回答
0
投票

看起来编译器试图告诉您,在运行时您无法知道

array
的地址,因此
&array
不是
constexpr
,或者不是编译时已知的表达式。但是,
char[]
可以隐式转换为
char*
,因此请尝试在需要使用
array
的地方使用
ptr
。不过,我不能保证它会起作用,因为我看不到你的所有代码。

© www.soinside.com 2019 - 2024. All rights reserved.