我很难创建一个数组来保存我制作的类的对象。我不能使用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[]
没有指定构造函数参数。