类中成员属性有数组时,如何分文件保存。(成员行为给成员属性一维数组的成员赋值),

当我用.h和.cpp分文件写入圆和点类时,如何解决在给坐标的x,y轴赋值时出现的为定义标识符的问题?而且就算我加了作用域circle::,问题就变成了非静态成员引用必须与特定对象相对的报错。所以我必须要一次性给这个代表坐标的一纬数组赋值完成才可以么,怎样解决成员属性是数组的类的分文件填写。

img

img
#include

class point
{
public:
int p_coord[2];

public :
void setp_coordx(int p_x)
{
p_x = p_coord[0];
}
void setp_coordy(int p_y)
{
p_y = p_coord[1];
}

};

class circle
{
public:
int c_coord[2];
int c_r;

public:
void setc_coordx(int c_x)
{
c_x = c_coord[0];
}
void setc_coordy(int c_y)
{
c_y = c_coord[1];
}
};
void judge(point &p1,circle &c1)
{
if ((p1.p_coord[0] - c1.c_coord[0])(p1.p_coord[0] - c1.c_coord[0]) +(p1.p_coord[1]-c1.c_coord[1])(p1.p_coord[1]-c1.c_coord[1])==c1.c_r*c1.c_r )
{

    std::cout << "点在圆上" << std::endl;
}
else if ((p1.p_coord[0] - c1.c_coord[0])*(p1.p_coord[0] - c1.c_coord[0]) + (p1.p_coord[1] - c1.c_coord[1])*(p1.p_coord[1] - c1.c_coord[1]) > c1.c_r*c1.c_r)
{
    std::cout << "点在圆外" << std::endl;
}
else
{
    std::cout << "点在圆内" << std::endl;
}

}

int main()
{
circle c1;
point p1;

std::cout << "请输入圆的半径 r :"; std::cin >> c1.c_r;

int c_x = 0;
std::cout << "请输入圆的 x 坐标:"; std::cin >> c_x;
c1.setc_coordx(c_x);

int c_y = 0;
std::cout << "请输入圆的 y 坐标:"; std::cin >> c_y;
c1.setc_coordy(c_y);

int p_x = 0;
std::cout << "请输入点的 x 坐标:"; std::cin >> p_x;
p1.setp_coordx(p_x);

int p_y = 0;
std::cout << "请输入点的 y 坐标:"; std::cin >> p_y;
p1.setp_coordy(p_y);

judge(p1, c1);


system("pause");
return 0;

}

我猜题主意思是把一个类分开放在.h和.cpp里,那么声明可以放在.h,然后可以在.cpp定义函数biru

void circle::setc_coordx(int c_x)
{
c_x = c_coord[0];
}

需要在函数名前加上类名,这样就可以找到对应的c_coord了

另外你可能对类不太理解,因为上面这个赋值c_x = c_coord[0];没有任何意义,把一个未知数赋给了临时变量,理论上我觉得你的意思应该是c_coord[0]=c_x;

你在.h文件中定义属性,cpp中肯定不能直接这么用了。如果引用多个.h文件的话,且存在相同属性,编辑器怎么知道你要引用哪个.h文件中的?

把你需要用到的成员变量写成static的,就不用和对象关联了,就变成了和类关联,可以用circle::这样用了