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;
} };
编译器显示错误“operator =”是'vec3'的私有成员。怎么会发生这种情况?
答案 0 :(得分:2)
更改为
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;
} };
操作员方法已公开,并且可从外部代码中看到
此外,类operator=
中vec2
的定义是不必要的,因为它是此类的运算符的默认行为。顺便说一下,operator=
中的vec3
也是不必要的。
也许你应该从一个类改为结构。
答案 1 :(得分:1)
默认情况下,c ++中的类成员是私有的。
要允许外部代码查看运算符,您需要将其指定为public。
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;
} };