我有一个数组,我希望它是一个私有成员变量。我的程序作为实现选择排序的方式是,main方法以数组的大小提供,构造函数传入并创建具有给定大小的新数组。
我已经完成了Java,但在C ++中无法弄清楚。 (看了这个网上其他人的帖子后,我发现我必须让我的变量变为静态)
谢谢。
[ArrayS.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;
}
谢谢。
答案 0 :(得分:1)
上面的代码有两个问题。第一个是在C ++中你不能有一个大小为0的数组。第二个是对于类的静态成员,你需要在一个翻译单元中提供一个定义:
struct test {
static long a[10];
};
// in a single .cpp
long test::a[10] = {};
除此之外,如果需要仅在运行时已知的大小的数组,则不能使用原始数组。您可以使用动态分配的内存(通过new[]
),但最好使用std::vector<long>
。此外,目前还不清楚您是否真的需要该成员static
。该上下文中的static
关键字表示类成员(即,由程序中的所有代码共享,而非每个实例数据)
答案 1 :(得分:0)
您需要在类外部再次定义变量。每当你有一个静态成员。 虽然g ++编译的c ++代码具有大小为零的数组,但如果这是你真正想要的,那就重新考虑。