我正在学习c ++,所以我很难修复编译这个程序时的错误。我打算写一个小程序,它可以打印int数组中的每个元素。例如,类NumberRange有两个参数a和b,如果a是5且b是9,那么构造函数将分配一个数组并按顺序用值5,6,7,8,9填充它。我的代码如下:
头文件NumberRange.h
class NumberRange {
public:
NumberRange(int a, int b);
virtual ~NumberRange();
void Print(int a, int b);
private:
int *range_;
int size;
};
.cc文件NumberRange.cc
是:
#include <iostream>
#include "numberrange.h"
using namespace std;
NumberRange::NumberRange(int a, int b) {
if (a > b) {
cout << "a must be equal or less than b" << endl;
}
}
NumberRange::~NumberRange() {
//implementation
}
void NumberRange::Print(int a, int b) {
this->size = b - a + 1;
this->range_[0] = a;
for (int i = 0; i < this->size; i++) {
this->range_[i] = a + i;
cout << this->range_[i] << endl;
}
}
int main() {
NumberRange *numberrange;
numberrange->NumberRange (5, 9);
numberrange->Print(5,9);
}
我编译程序时遇到错误:
cannot refer to type member 'NumberRange' in 'NumberRange' with '->' numberrange->NumberRange (5, 9);
member 'NumberRange' declared here class NumberRange {
我不知道错误含义以及如何修复此程序?我想知道逻辑是对还是不对。有没有人可以帮助我?非常感谢你。
答案 0 :(得分:1)
NumberRange *numberrange;
numberrange->NumberRange (5, 9);
这不是您构建新NumberRange
的方式。你可以做任何一件事
NumberRange *numberrange = new NumberRange(5, 9);
或者更好的是,避免多余的内存分配:
NumberRange numberrange(5, 9);