gpt4 book ai didi

c++ - 在成员函数之间传递 const 变量作为数组的索引

转载 作者:行者123 更新时间:2023-11-28 01:34:11 25 4
gpt4 key购买 nike

我试图解决这个问题,但我做不到。我有一个类定义,我想要一个成员函数 (siz) 将常量值返回给另一个成员函数 (abc)。该值在该函数的数组声明中用作最大索引。但这似乎不起作用。这是一个简化版本:

class bin {
constexpr int siz();
public:
void abc();
};

constexpr int bin::siz() {
const int sizz = sizeof(int) * 8;
}

void bin::abc() {
char arr[siz()]; // compiler: this expression didn't evaluate as constant (¿?)
};

但是,其他非常相似的代码(但使用简单的函数)确实可以编译...

constexpr int siz() {
const int sizz = sizeof(int) * 8;
return sizz;
}

int main() {
char arr[siz()];
return 0;
}

最佳答案

我不完全确定,但我认为问题是在 bin::abc 中,对象在运行时可以是任何东西。因此,bin::siz() 无法在编译时求值。

以下工作正常

int main()
{
bin b;
char arr[b.siz()];
}

bin 更改为:

class bin {
public:
constexpr int siz();
};

constexpr int bin::siz() {
return sizeof(int) * 8;
}

如果 siz 不依赖于对象的状态,如您发布的代码,我建议将其设为 static 成员函数。

以下对我来说很好。

class bin {
public:
static constexpr int siz();
void abc() const;
};

constexpr int bin::siz() {
return sizeof(int) * 8;
}

void bin::abc() const {
char arr[siz()];
}

int main()
{
bin b;
char arr[b.siz()];
}

关于c++ - 在成员函数之间传递 const 变量作为数组的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50083069/

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