bcc32 中简单数组的初始值设定项错误太多
Too many initializers error for a simple array in bcc32
编译以下示例
struct S {};
int main() {
S array[1] = { S() };
}
与 bcc32 我得到以下错误:
[bcc32 Error] test.cpp(4): E2225 Too many initializers
它是 bcc32 中的错误还是我遗漏了什么并且上面的示例不是有效的 C++?
Clang 和 GCC 都可以毫无问题地编译此示例。
Borland BDS2006(可能还有更新的版本)
在其 C++ 引擎中,默认 constructor/destructor 对于 class
和 struct
存在一些问题。
- 有关详细信息,请参阅 bds 2006 C hidden memory manager conflicts。
添加自定义(甚至为空)constructor/destructor 解决了许多问题,甚至是您的问题。尝试:
struct S
{
S(){};
S(S& a){};
~S(){};
S* operator = (const S *a){};
//S* operator = (const S &a){}; // use this only if you have dynamic allocation members
};
int main()
{
S array[1] = { S() };
}
我在 BDS2006 中尝试过它,看起来它可以工作(很难说 struct
里面没有任何东西)但是你可以编译并 运行 在至少...
我首先在 BDS2006 中检测到这种行为......还没有真正尝试过 BCB6 因为它从一开始就是垃圾并解雇几天后(我认为最差的 BCB 甚至击败了 BCB3,4)在 BCB5 中是一切都很好(在 BDS2006 之前,这是我最喜欢的 IDE)所以他们必须更改 C++ 引擎(不要与 运行time 库混淆!!! ).
甚至添加空的构造函数析构函数也有帮助。如果你有动态分配,你需要处理粗略的分配。如果你有嵌套 class/struct 不要忘记将这些也添加到它们中。
编译以下示例
struct S {};
int main() {
S array[1] = { S() };
}
与 bcc32 我得到以下错误:
[bcc32 Error] test.cpp(4): E2225 Too many initializers
它是 bcc32 中的错误还是我遗漏了什么并且上面的示例不是有效的 C++?
Clang 和 GCC 都可以毫无问题地编译此示例。
Borland BDS2006(可能还有更新的版本)
在其 C++ 引擎中,默认 constructor/destructor 对于 class
和 struct
存在一些问题。
- 有关详细信息,请参阅 bds 2006 C hidden memory manager conflicts。
添加自定义(甚至为空)constructor/destructor 解决了许多问题,甚至是您的问题。尝试:
struct S
{
S(){};
S(S& a){};
~S(){};
S* operator = (const S *a){};
//S* operator = (const S &a){}; // use this only if you have dynamic allocation members
};
int main()
{
S array[1] = { S() };
}
我在 BDS2006 中尝试过它,看起来它可以工作(很难说 struct
里面没有任何东西)但是你可以编译并 运行 在至少...
我首先在 BDS2006 中检测到这种行为......还没有真正尝试过 BCB6 因为它从一开始就是垃圾并解雇几天后(我认为最差的 BCB 甚至击败了 BCB3,4)在 BCB5 中是一切都很好(在 BDS2006 之前,这是我最喜欢的 IDE)所以他们必须更改 C++ 引擎(不要与 运行time 库混淆!!! ).
甚至添加空的构造函数析构函数也有帮助。如果你有动态分配,你需要处理粗略的分配。如果你有嵌套 class/struct 不要忘记将这些也添加到它们中。