访问类实例的成员时出错

Error when accessing members of an instance of a class

本文关键字:出错 成员 实例 访问      更新时间:2023-10-16

我正在学习c++,所以当我编译这个程序时,我很难修复错误。我要写一个小程序,它可以打印整型数组中的每个元素。例如,类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 {

我不知道错误的含义,我该如何修复这个程序?我想知道这个逻辑是否正确。有人能帮我吗?非常感谢。

NumberRange *numberrange;
numberrange->NumberRange (5, 9);

这不是你如何构造一个新的NumberRange

NumberRange *numberrange = new NumberRange(5, 9);

或者更好的是,避免多余的内存分配:

NumberRange numberrange(5, 9);