试图用C ++创建一个对象数组

时间:2015-10-12 00:00:15

标签: c++ arrays pointers

我很难创建一个包含我所制作类的对象的数组。我不能使用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] 作为函数调用而不是创建数组?

1 个答案:

答案 0 :(得分:2)

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