0

在这里,我试图创建一个结构,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;
};
4

1 回答 1

1

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

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

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

于 2013-09-26T00:24:40.530 回答