因此,我有一个使用图形模式[CrossDeviceInfo.Current.Platform.ToString();
]库的程序...
并且我想初始化图形,所以我会自然地这样做:
graphics.h
当我编译上面的代码时,它给出错误“ ISO C ++禁止将字符串常量转换为char *”
我知道一种解决方法:
initgraph(graphics_driver,graphics_mode,"") ;
以上编译就可以了...
对于char c_array[] = "" ;
initgraph(graphics_driver,graphics_mode,c_array) ;
之类的函数,这没关系,因为我只会调用一次。但是,我想像这样使用initgraph()
函数(因为我在程序中多次调用它):
outtextxy()
因为为所有不同的outtextxy(0,0,"Test") ;
函数声明一个数组只会浪费空间。
那么,有没有办法使用上面的方法而没有数组或任何额外的变量?
P.S:安装outtextxy()
库并配置所有链接器选项后,我正在使用代码块。等等...
谢谢,再见, 塞缪尔
答案 0 :(得分:5)
您引用的文件graphics.h
是positively ancient。
它太旧了,早于const
。
字符串文字一直是const char[N]
二十年了。从那时起不推荐使用它们,而是假装它们是char[N]
。从C ++ 11开始,它是完全非法的。从过去的const
以前开始,已有十三年的时间来移植代码,此后还有七年的时间。
您必须像现在这样破解(将字符串文字复制到可能可变的缓冲区,即使它不会发生突变!),也可以用const_cast
进行破解(是< em>非常确保该参数不会被更改!),或者改用这个千年中的库。
答案 1 :(得分:1)
如果您完全确定outtextxy()
不会修改传递给它的字符串,则可以编写自己的包装函数,如:
void my_outtextxy(int x, int y, const char* text) {
outtextxy(x, y, const_cast<char*>(text));
}