[英]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.