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