构造函数:函数不带3个参数

时间:2016-03-25 19:32:19

标签: c++ class oop constructor

为什么行"nota(sinais, subs, indices);"告诉该函数不带3个参数。我已经定义了一个带有3的构造函数。

class Solucao{
        bool    *sinal;
        bool    *sublinhado;
        int     *indice;
public:
        Solucao(){sinal = sublinhado = NULL;  indice = NULL; };
        Solucao (bool *sinais, bool *subs, int *indices)
        {
            sinal = sinais;
            sublinhado = subs;
                indice = indices;
        };
};


void Balas(int n, int m, Vector<float> c, Vector<float> b, Matrix<float> A) {
No_Balas *J = NULL;
Solucao *nota();
bool *sinais = new bool[1];
bool *subs = new bool[1];
int *indices = new int[1];

Vector<int> pto_inicial(1);

    pto_inicial[0] = 0; 
    sinais[0] = 0;
    subs[0] = 0;
    indices[0] = 0;

nota(sinais, subs, indices);
}

2 个答案:

答案 0 :(得分:1)

nota实例有一个Solucao*类型(即它是一个指针 - 我假设额外的括号是一个拼写错误,你并没有尝试声明一个函数)而不是Sulucao类型。

根据您当前的代码,您似乎正在尝试执行以下操作:

nota = new Solucao(sinais, subs, indices);

但是,除非您有充分理由这样做,否则我可能会建议不要使用new。相反,您可以删除Solucao *nota();,并在获得所有必需参数后构建它:

Solucao nota(sinais, subs, indices);

注意:如果继续使用动态分配(即new),我建议您使用符合C ++ 11的编译器并了解可用的智能指针。例如:

std::unique_ptr<Solucao> nota = std::make_unique(sinais, subs, indices);

答案 1 :(得分:0)

Solucao *nota();

这声明了一个名为nota的函数,该函数不带参数并返回指向Solucao的指针。所以编译器是正确的,它不需要3个参数。