0

我有一个数组,我希望它是一个私有成员变量。我的程序实现选择排序的方式是,主方法输入数组的大小,构造函数传入并创建具有给定大小的新数组。

我已经在 J​​ava 中完成了,但在 C++ 中无法弄清楚。(在查看了这个网络上其他人的帖子后,我发现我必须将我的变量设为静态)

谢谢你。

[阵列S.h]

public:
    ArrayS(void);
    ArrayS(int max);
    ~ArrayS(void);

private:
        static long a [0];  

[ArrayS.cpp]

ArrayS::ArrayS(void)
{

}

ArrayS::ArrayS(int max)
{
    long ArrayS::a [max];                 
    nElems = 0; 
}

谢谢你。

4

2 回答 2

1

上面的代码有两个问题。第一个是在 C++ 中你不能有一个大小为 0 的数组。第二个是对于一个类的静态成员,你需要在一个翻译单元中提供一个定义:

struct test {
   static long a[10];
};
// in a single .cpp
long test::a[10] = {};

除此之外,如果您需要大小仅在运行时已知的数组,则不能使用原始数组。您可以使用动态分配的内存(通过new[]),但最好使用std::vector<long>. 此外,尚不清楚您是否真的需要该成员static。该static上下文中的关键字表示类成员(即由程序中的所有代码共享,而不是每个实例的数据)

于 2013-03-19T21:53:12.557 回答
0

您需要在类之外再次定义变量。只要你有一个静态成员。尽管 g++ 编译的 c++ 代码的数组大小为零,但请重新考虑这是否是您真正想要的。

于 2013-03-20T18:56:02.900 回答