簡體   English   中英

沒有匹配的函數來調用“構造函數”

[英]no matching function to call for "constructor"

我正在嘗試創建一個Vertex類型的數組,然后初始化函數中的每個成員。 Vertex類在構造函數中使用 Vector3f:

Vertex::Vertex(const Vector3f& position) : position(position) { }

在頭文件中,我像這樣聲明數組:

class Application
{
    //...
    private:
        Vertex data[3];
    //...
};

在源文件中,在一個函數中,我嘗試這樣做:

data[0] = Vertex(Vector3f(0, 0, 0));
data[1] = Vertex(Vector3f(0, 0, 0));
data[2] = Vertex(Vector3f(0, 0, 0));

但是當我嘗試編譯時出現此錯誤:

/home/mert/dev/C++/C++3D/src/Application.h: In constructor ‘Application::Application()’:
/home/mert/dev/C++/C++3D/src/Application.h:31:19: error: no matching function for call to ‘Vertex::Vertex()’
     Application() { }
                   ^

我嘗試將數組聲明為頂點指針,然后執行data = new Vertex[3]; 但結果是一樣的。 我該怎么做才能解決這個問題?

Vertex 類沒有默認構造函數。 當您聲明一個對象數組時,每個數組條目都是通過調用默認構造函數來構建的。 您可以通過添加默認構造函數或聲明頂點指針數組,然后在實例化對象時調用正確的構造函數來解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM