我的Vec3类初始化没有为它编码.如何?



我制作了一个自定义的vector3类。在这个类中,我没有编写通过花括号进行初始化的代码。无论代码如何运行,即使没有对其进行编码。

如此:

Vec3 pos = {1,1,0};

但是我从来没有写过花括号。如何? ?它是如何工作的????????

这是我的vec3类头文件

class Vec3
{
private:
float* data;
public:
//float* data;
// constructors
Vec3();
Vec3(float x, float y, float z);
Vec3(Vec3&);
Vec3(Vec3&&);
~Vec3();
// getters setters
float getX();   float getY();   float getZ();
void setX(float);   void setY(float); void setZ(float);
float& operator[](int);
// maths
float magnitude();
Vec3& operator=(Vec3&);
Vec3& operator=(Vec3&&);
Vec3 operator-();
friend Vec3 operator+(Vec3&, Vec3&);  friend Vec3 operator+(Vec3&, Vec3&&);  friend Vec3 operator+(Vec3&&, Vec3&);  friend Vec3 operator+(Vec3&&, Vec3&&);
friend Vec3 operator-(Vec3&, Vec3&);  friend Vec3 operator-(Vec3&, Vec3&&);  friend Vec3 operator-(Vec3&&, Vec3&);  friend Vec3 operator-(Vec3&&, Vec3&&);
friend float operator*(Vec3&, Vec3&); friend float operator*(Vec3&, Vec3&&); friend float operator*(Vec3&&, Vec3&); friend float operator*(Vec3&&, Vec3&&);
friend Vec3 operator%(Vec3&, Vec3&);  friend Vec3 operator%(Vec3&, Vec3&&); friend Vec3 operator%(Vec3&&, Vec3&);  friend Vec3 operator%(Vec3&&, Vec3&&); 
friend Vec3 operator*(float, Vec3&);
friend Vec3 operator*(float, Vec3&&);

// logical
friend bool operator==(Vec3&, Vec3&); friend bool operator==(Vec3&, Vec3&&); friend bool operator==(Vec3&&, Vec3&); friend bool operator==(Vec3&&, Vec3&&);
// output
friend std::ostream & operator << (std::ostream& out, const Vec3& v);
};

Vec3(浮动x,浮动y,浮动z);如果你已经在你的类中定义了它,那么

语句Vec3 pos = {1,1,0};copy-list-initialisation{1,1,0}不是(总是)一个数组表达式,如果没有上下文,它就没有类型。

查看Vec3的构造函数,并发现Vec3(float x, float y, float z);是这些参数的最佳匹配。

相关内容

  • 没有找到相关文章