使用全局变量给出错误

using global variable giving error

本文关键字:出错 错误 全局变量      更新时间:2023-10-16

在这里,我正在尝试创建一个带有key[2*d]ptr[2*d+1]的结构,但编译器对这些代码行给出错误,只说:

"错误:数据成员可能没有可变修改的类型。"

我只想在我的代码中使用"d"。现在如何解决它。

#include<iostream>
using namespace std;
static int d=1;
struct Btree{
    public:
    int key[2*d];
    int count;
    Btree *ptr[2*d+1];
    Btree *pptr;
};

尝试制作 d const,如果你有 C++11 使用 constexpr,编译器会很不高兴,因为没有理由 d 不能随时更改。它将 T[N] 视为您看到的一种类型(这对于优化很有用),它很不高兴,因为您的 Btree 可能并不完全相同。

顺便说一下,你可以向你的 Btree 添加一个 int 模板参数,然后它会很高兴(假设整数是一个 constexpr),因为该模板中的所有内容都是相同的,但你不能混合它们(Btree<1>和 Btree<2> 将无法交互,'通过显式(通过模板或其他方式)使用它们的函数)

如果 d 可以更改,您真的希望在堆上它。

相关文章: