只是一个真正的快速,我觉得这可能是一个基本问题,但我无法解决如何让它工作。我已经宣布了两个坐标点:
int X = (0);
int Y = (0);
COORD coord;
coord.X = X;
coord.Y = Y;
它们已在main之前声明,因为它们需要全局访问我的程序中的其他函数,但是在尝试设置coord.X / Y时,我收到错误消息,说声明没有存储类型。我该怎么做才能解决这个问题?
答案 0 :(得分:2)
int X = (0);
int Y = (0);
COORD coord;
这些是全局变量的定义,以及前两个字面值的初始化。
coord.X = X;
coord.Y = Y;
这些是陈述。
你不能在任何函数之外使用语句,它们需要被放入某些函数中,例如main
。
但是要初始化像COORD
这样的类的实例的成员字段,通常使用该类的构造函数:
struct COORD {
int x;
int y;
COORD(int x, int y)
: x(x), y(y) {
}
};
COORD p = COORD (21, 42);
但是在这种情况下你根本不需要构造函数,你可以使用结构初始化:
struct COORD {
int x;
int y;
};
COORD q = {42, 21};
COORD p{21, 42}; // universal construction
但是,最后,我非常怀疑你真的需要一个全局变量。您应该检查整体设计。 (尽管上述所有内容与您是否使用它来初始化全局或本地或成员变量无关)