我很难创建一个数组来保存我制作的类的对象。我不能使用std :: vector来保存对象,所以这是我尝试做的事情:

这是我的cpp文件:
Resistor.cpp:

#include "Resistor.h"
Resistor::Resistor(int rIndex_, string name_, double resistance_){
    int rIndex = rIndex_;
    name = name_;
    resistance = resistance_;
}


我正在尝试在另一个cpp文件中制作这些电阻器对象的数组:
Rparser.cpp:

#include "Resistor.h"
#include "Node.h"
#include "Rparser.h"

Rparser::Rparser(int maxNodes_, int maxResistors_){
    maxNodes = maxNodes_;
    maxResistors = maxResistors_;
    resistorArray = new Resistor[maxResistors_];   //trying to make an array
}


我的Rparser.h文件如下所示,您可以看到我声明了一个指向Resistor数据类型的指针:

#include "Resistor.h"
#include "Node.h"
class Rparser{
public:
    int maxNodes;
    int maxResistors;
    Resistor *resistorArray;  //declared a pointer here

    Rparser(int maxNodes_, int maxResistors_);
    ~Rparser(){};


我收到以下错误:

error: no matching function for call to ‘Resistor::Resistor()’
note: candidates are: Resistor::Resistor(int, std::string, double, int*)
note:                 Resistor::Resistor(const Resistor&)


为什么要处理该行resistorArray = new Resistor[maxResistors]
作为函数调用而不是创建数组?

最佳答案

您需要一个不带任何参数的Resistor构造函数(这是编译器在错误消息中告诉您的内容,它不是函数调用,而是对无参数构造函数的调用。)考虑一下,new Resistor[]没有指定构造函数参数。

09-26 15:48