我正在迁移一个旧的 C++ 库,其中大部分代码已经有 20 年以上的历史了。我发现了一个结构声明,我认为它是一个看起来像这样的构造函数:
struct PROPERTIES_PRESENT2
{
bool PropertyPresence[13];
struct PROPERTIES_PRESENT2(void)
{
memset((&PropertyPresence), 0, (sizeof(bool) * 13));
}
};
今天的现代编译器无法编译它。我想我可以通过删除构造函数之前的“结构”来使其工作。但我希望获得帮助的是:旧的 C++ 标准是否需要在构造函数之前使用“结构”,如上所示?任何人都可以确认该行为确实是构造函数的行为,而不是一些我应该意识到的长期被遗忘的带有副作用的东西吗?
我的“转换”版本:
struct PROPERTIES_PRESENT
{
bool PropertyPresence[13];
PROPERTIES_PRESENT(void)
{
memset((&PropertyPresence), 0, (sizeof(bool) * 13));
}
};
旧的 C++ 标准是否要求构造函数之前有“结构”,如上所示?
不,ISO C++ 中从来都不是格式良好的语法。
我从未见过这种语法,所以遗憾的是我无法回答问题的其余部分。