C++ C++;如何在另一个类中使用运算符重载
编译器显示错误“operator=”是“vec3”的私有成员。这是怎么发生的?更改为C++ C++;如何在另一个类中使用运算符重载,c++,C++,编译器显示错误“operator=”是“vec3”的私有成员。这是怎么发生的?更改为 class vec3{ float x; float y; float z; const vec3 & operator= (const vec3 &rvec3) { x = rvec3.x; y = rvec3.y; z = rvec3.z; return *this; } }; class vec2{ vec3 vetex; vec3 normal;
class vec3{
float x;
float y;
float z;
const vec3 & operator= (const vec3 &rvec3)
{
x = rvec3.x;
y = rvec3.y;
z = rvec3.z;
return *this;
} };
class vec2{
vec3 vetex;
vec3 normal;
const vec2 & operator = (const vec2 &rvec2)
{
vetex = rvec2.vetex;
normal= rvec2.normal;
return *this;
} };
运算符方法已公开,并且可以从外部代码中看到。此外,类
vec2
中的operator=
的定义是不必要的,因为这是该类运算符的默认行为。顺便说一下,vec3
中的operator=
也是不必要的也许您应该从类转换为结构。
< P>默认情况下,C++中的类成员是私有的。p> 要允许外部代码看到该运算符,需要将其指定为publicclass vec3{
float x;
float y;
float z;
public:
const vec3 & operator= (const vec3 &rvec3)
{
x = rvec3.x;
y = rvec3.y;
z = rvec3.z;
return *this;
} };
class
可见性默认为private
。添加<代码>公有:<代码> >你似乎想使用<代码>结构> <代码>,用于琐碎的<代码> VEC3和class vec3{
float x;
float y;
float z;
public:
const vec3 & operator= (const vec3 &rvec3)
{
x = rvec3.x;
y = rvec3.y;
z = rvec3.z;
return *this;
} };