Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+中常量数组的初始化+; < >我需要通过C++中的初始化列表初始化类构造函数中的 const int 数组。p> 我知道有一个简单的解决方案,这个问题的基础上使用 扩展初始化列表 尽管如此,我还是希望避免使用-std=c++11或-std=gnu++11 显然,我从一开始就知道它的大小是4 内容是{1,2,3,4}_C++_Arrays_Constructor_Initialization - Fatal编程技术网

C+中常量数组的初始化+; < >我需要通过C++中的初始化列表初始化类构造函数中的 const int 数组。p> 我知道有一个简单的解决方案,这个问题的基础上使用 扩展初始化列表 尽管如此,我还是希望避免使用-std=c++11或-std=gnu++11 显然,我从一开始就知道它的大小是4 内容是{1,2,3,4}

C+中常量数组的初始化+; < >我需要通过C++中的初始化列表初始化类构造函数中的 const int 数组。p> 我知道有一个简单的解决方案,这个问题的基础上使用 扩展初始化列表 尽管如此,我还是希望避免使用-std=c++11或-std=gnu++11 显然,我从一开始就知道它的大小是4 内容是{1,2,3,4},c++,arrays,constructor,initialization,C++,Arrays,Constructor,Initialization,好吧,如果您禁止候选集中的C++11解决方案,那么。我唯一能想到的方法是,在不使用C++11初始值设定项列表的情况下,将其隐藏在结构包装器中,并在构造初始值设定项列表中对其进行值初始化: #include <iostream> using namespace std; struct ArrayWrap { int content[4]; int& operator [](size_t n) { return content[n]; } int ope

好吧,如果您禁止候选集中的C++11解决方案,那么。

我唯一能想到的方法是,在不使用C++11初始值设定项列表的情况下,将其隐藏在结构包装器中,并在构造初始值设定项列表中对其进行值初始化:

#include <iostream>
using namespace std;

struct ArrayWrap
{
    int content[4];
    int& operator [](size_t n) { return content[n]; }
    int operator [](size_t n) const { return content[n]; }
};

static const ArrayWrap content = { {1,2,3,4} };


struct MyObj
{
    const ArrayWrap arrwrap;

    MyObj() : arrwrap(content) {}
};

int main(int argc, char *argv[])
{
    MyObj obj;
    for (int i=0;i<4;++i)
        cout << obj.arrwrap[i] << ' ';
    cout << endl;

    return EXIT_SUCCESS;
}
<> P>在结构上埋入固定数组是很常见的,当从值中返回固定函数时,在这种情况下,我只是利用由C++编译器生成的包装结构的默认拷贝cTor。
可能不是您想要的理想解决方案,但它确实可以工作,并且可以在C++98下编译。

因为字符只是一个字节,所以它可以保存0到255或-128到127之间的值,取决于它是否有签名。这是一个输入错误:)我更正了:)为什么需要通过带有一组固定值的初始化列表初始化类构造函数中的
const int
数组?为什么不让它成为一个
静态
成员(因为它的内容无法更改,并且不特定于正在构建的实例)?如果不是因为你在问题中的最后一句话,你的查询可能会有牙齿,但正如所写的,Charles的注释从根本上解决了它。你是对的。使用static const member看起来是个好主意。如果您能告诉我们如何使用c++11,那就太好了。@saksham:问题是
我想避免使用-std=c++11或-std=gnu++11。
我知道,但就我所知,如果您could@saksham:要使用c++11实现这一点,我们只需要利用初始化列表中的优势。必须在.hxx文件中的类“a”声明中声明变量const int x[3]。之后,在.cpp文件中,我们必须编写一个():x{1,2,3}{},其中A是存储x变量的类的名称(因此A()是构造函数)。如果这个解释不够充分,我可以给你发一个示例类。@EjdzEs非常感谢!这就够了
1 2 3 4