繁体   English   中英

构造函数:函数不接受 3 个参数

[英]Constructor: function does not take 3 arguments

为什么是"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);
}

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);
Solucao *nota();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM