我很难创建一个包含我所制作类的对象的数组。我不能使用std :: vector来保存对象,所以这就是我试图做的事情:
这是我的cpp文件: Resistor.cpp:
#include "Resistor.h"
Resistor::Resistor(int rIndex_, string name_, double resistance_){
int rIndex = rIndex_;
name = name_;
resistance = resistance_;
}
我试图在另一个cpp文件中创建这些Resistor对象的数组: 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]
作为函数调用而不是创建数组?
答案 0 :(得分:2)
你需要一个不带参数的Resistor
构造函数(这是编译器在错误消息中告诉你的,它不是函数调用,而是对无参数构造函数的调用。)。想一想,new Resistor[]
没有指定构造函数参数。