您好我在类中使用动态数组时遇到问题。我被告知“类VectorDouble将有一个私有成员变量用于动态的双精度数组。”我只是为这个程序编写头文件,但我没有超过它。一旦达到容量,该类需要能够加倍。 这是我的代码:
#include <iostream>
using namespace std;
// VectorDouble class header file
class VectorDouble
{
public:
// constructor for an empty vector of type double
VectorDouble();
// constructor that take an int argument for an integer size of and array
VectorDouble(int initial_size);
// copy constructor
VectorDouble(VectorDouble &object);
// destructor to return dynamic memory to the freestore
~VectorDouble();
// overloaded operator = for VectorDouble class
VectorDouble& operator =(const VectorDouble &source);
// overloaded operator == for VectorDouble class
friend bool& operator ==(const VectorDouble &this_vector,
VectorDouble &other_vector);
// adds a new element at the end of the array
void push_back();
// returns allocated size of VectorDouble dynamic array
int capacity();
// returns used size of the VectorDouble object
int size();
// allocates a specified block of memory for specified number of double
// type values
void reserve(int new_reserve);
// changes the size of the dynamic array
void resize(int new_size);
// returns the value at the specified index
double value_at(int index);
// changes the value at the specified index to double value d
void change_value_at(double d, int index);
private:
int count;
int max_count;
int index_pointer;
*index_pointer = new double[100];
};
我得到的错误都在这一行:* index_pointer = new double [100];
`new'不能出现在常量表达式
ISO C ++禁止声明`index_pointer'没有类型
ISO C ++禁止成员`index_pointer'
使`index_pointer'静态
非整数的静态数据成员的类内初始化无效 输入`int *'
答案 0 :(得分:6)
你的指针需要一个类型。将该行更改为
double* index_pointer;
在构造函数中添加行
index_pointer = new double[100];
等等你的其他构造函数和赋值运算符。
但这也是一个命名冲突,因为你有另一个名为index_pointer的私有int成员。我不确定该成员的用途是什么,但是如果你确实需要它,那么你必须将它命名为指针或其他指针。
请记住析构函数中的delete[] index_pointer;
。
答案 1 :(得分:3)
您应该使用std::vector<double>
。