[問題] 標頭檔的問題

作者: shiburin (廢文製造機)   2021-01-18 16:33:06
問題(Question):
無法使用 header 裡 class 的變數
錯誤結果(Wrong Output):
...does not name a type...
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
header file:
#include<vector>
#include<glm/glm.hpp>
class polygon {
public:
polygon() {}
polygon(std::vector<glm::vec2> vec): vertices(vec) {}
std::vector<glm::vec2> vertices;
};
_____________________________
main.cpp:
polygon cube;
^^^
這行沒問題
cube.vertices = std::vector<glm::vec2> { glm::vec2(0.0, 0.0) };
^^^
在這裡出錯 'cube' does not name a type
作者: nh60211as   2021-01-18 17:30:00
https://wandbox.org/permlink/DuIBuJyQeGS6iuAl你是不是在global scope做這件事啊
作者: LPH66 (-6.2598534e+18f)   2021-01-18 18:19:00
樓上+1, 原 PO 你是想要初始化一個全域物件還是?
作者: nh60211as   2021-01-18 19:05:00
polygon cube = {std::vector<glm::vec2> {glm::vec...這樣吧,不然寫一個static function來初始化這個物件
作者: LPH66 (-6.2598534e+18f)   2021-01-18 23:56:00
主要差別在於 = 字單獨寫是普通的指定但跟在宣告後面的意思其實是初始化但你要用這個語法初始化一個結構就必須要寫下篇回文提到的list initialization 的語法才行那你這個狀況已經有能用的建構式, 那就可以不用寫 =用 direct initialization 就可以初始化了

Links booklink

Contact Us: admin [ a t ] ucptt.com