【发布时间】:2019-09-17 06:45:14
【问题描述】:
我想使用 setter 方法将数字数组存储在类的私有变量中,但不确定如何。
该程序需要一个默认构造函数和其他基本方法,但为简单起见,我只提供了默认构造函数。
class numberList{
public:
numberList()
{
numberStore = new int[8];
} // default constructor
void setter() // not sure what goes here
{
//not sure what goes here
}
private:
int* numberStore;
};
int main()
{
numberList list1;
list1.setter(1,2,3,4,5,6,7)
}
我希望 list1.setter() 将所有值放入数组中。我认为 memcpy() 可以在这里使用,但不确定。
我知道有一个运算符重载的概念,但不确定如何利用它。任何帮助将不胜感激:-)
编辑:不幸的是,作业要求我不要使用标准库:-(
【问题讨论】:
-
如果您的数组的大小在编译时已知,请改用
std::array。如果仅在运行时知道大小,请使用std::vector。 -
数组有 8 个数字的空间。数组需要一次性设置全部 8 个,还是调用者可以设置更少?可变参数模板或
std::initializer_list在这里可能很有用。 . -
@RemyLebeau 数组不一定要满,但是这个作业老师禁止使用标准库
-
那么首先,除非大小是在运行时计算的,否则使用 actual 数组(如
int numberStore[8];)。其次,如果一次只设置一个元素是可以的,那么可能是像void set(unsigned index, int value);这样的函数 -
最简单的方法是使用数组,如the answer by RoQuOTriX 所示。但是你也可以使用variadic function(我真的不建议初学者使用)。
标签: c++ arrays class operator-overloading setter