c++ - 在 C++98 中初始化结构数组的优雅方式

标签 c++ initialization c++98

我正在使用 gcc 版本 4.9.2 如果我使用编译器标志 -std=c++0x 进行编译,则以下代码编译正常。

#include <iostream>
#include <vector>

using namespace std;
typedef struct
{
    vector<int> a;
    int b;
} MYTYPE;

int main(void)
{
    MYTYPE test[]=
    {
        { {1,2,3},4},
        { {5,6},7},
        { {},8}
    };
}

如果我删除 -std=c++0x 标志,编译器会报告:

error: could not convert ‘{1, 2, 3}’ from ‘’ to ‘std::vector’

什么是初始化 test[] 的优雅方式?

最佳答案

除了通过在您的 struct 中编写一组丑陋的构造函数来在调用站点实现一些表面上的优雅之外, 没有特别优雅的方式来初始化这些 struct 的数组在 C++11 之前。

C++11 语法正是为这些构造而开发的。

关于c++ - 在 C++98 中初始化结构数组的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48385185/

相关文章:

不同内存位置中的 C++ 默认数组值

c++ - 解释完模板后如何处理学生?

java - 在云中部署 C++ 应用程序

javascript - 属性未初始化...但它应该是?

c++ - 警告 : uninitialized variable//But I have initialized ! C++ 编译器错误?

c++ - 使用虚拟继承时强制调用基本构造函数,尽管它永远不会被调用?

c++ - 如何计算 vector 递归类型中的非空 vector

c++ - 如何动态转换 boost::scoped_ptr?

PHP和C++汉字倒序UTF-8编码单元

C++ 函数指针与开关