_COORD结构转int/short的正确语法及C2440报错解决
错误原因
- 你写的
&COORD::X获取的是COORD结构体的成员指针,不是某个具体COORD实例的X成员实际值,类型不匹配所以触发类型转换报错 - 你只声明了
GetLargestConsoleWindowSize函数,没有实际调用它获取COORD结构体实例,无法读取结构体内部存储的坐标数值 - 你写的函数声明参数缺失,该API需要传入控制台输出句柄才能正常调用
正确实现方案
直接调用API获取COORD实例后,读取对应成员的值即可,参考代码如下:
// 提前包含Windows API必要头文件 #include <windows.h> int main() { // 获取标准输出句柄 HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); // 调用API拿到存储最大窗口尺寸的COORD实例 COORD maxConsoleSize = GetLargestConsoleWindowSize(hOut); // 直接读取实例的成员赋值 int screenX = maxConsoleSize.X; int screenY = maxConsoleSize.Y; return 0; }
补充说明
- 如果你已经包含了
windows.h头文件,不需要手动重复声明GetLargestConsoleWindowSize函数 - COORD结构体的X、Y成员本身是SHORT类型,赋值给int类型变量时会自动完成类型提升,不会出现转换报错
内容的提问来源于stack exchange,提问作者Cman88
相关产品推荐
相关产品推荐

