[问题] 标头档的问题

楼主: 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