簡體   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