为什么行"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);
}
答案 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个参数。