ERROR : ISO C++ forbids conversion from string constant to char*
ERROR : ISO C++ forbids conversion from string constant to char*
所以,我有一个使用图形模式 [graphics.h
] 库的程序...
我想初始化图形,所以我会很自然地这样做:
initgraph(graphics_driver,graphics_mode,"") ;
当我编译上面的代码时,它给出了错误“ISO C++ forbids converting a string constant to char*”
我知道一个解决方法:
char c_array[] = "" ;
initgraph(graphics_driver,graphics_mode,c_array) ;
上面编译得很好...
这对于像 initgraph()
.. 这样的函数是可以的,因为我只会调用它一次。但是,我想像这样使用 outtextxy()
函数(因为我在我的程序中多次调用它):
outtextxy(0,0,"Test") ;
因为为所有不同的 outtextxy()
函数声明一个数组只会浪费 space。
那么,有没有办法在没有数组或任何额外变量的情况下使用上面的方法?
P.S:我在安装 graphics.h
库并配置所有链接器选项后使用代码块。等...
您引用的文件graphics.h
是positively ancient。
它太老了,早于 const
。
二十年来,字符串文字 const char[N]
。从那时起,假装它们是 char[N]
就被弃用了。从 C++11 开始,它是完全非法的。从旧的 const
天开始迁移代码已有 13 年,此后又过了 7 年。
你必须像现在这样破解它(将字符串文字复制到一个可能的可变缓冲区,即使它不会被改变!),用 const_cast
破解它( 非常确保参数不会发生变化!),或者改用这个千年的库。
如果您完全确定 outtextxy()
不会修改传递给它的字符串,您可以编写自己的包装函数,例如:
void my_outtextxy(int x, int y, const char* text) {
outtextxy(x, y, const_cast<char*>(text));
}
所以,我有一个使用图形模式 [graphics.h
] 库的程序...
我想初始化图形,所以我会很自然地这样做:
initgraph(graphics_driver,graphics_mode,"") ;
当我编译上面的代码时,它给出了错误“ISO C++ forbids converting a string constant to char*”
我知道一个解决方法:
char c_array[] = "" ;
initgraph(graphics_driver,graphics_mode,c_array) ;
上面编译得很好...
这对于像 initgraph()
.. 这样的函数是可以的,因为我只会调用它一次。但是,我想像这样使用 outtextxy()
函数(因为我在我的程序中多次调用它):
outtextxy(0,0,"Test") ;
因为为所有不同的 outtextxy()
函数声明一个数组只会浪费 space。
那么,有没有办法在没有数组或任何额外变量的情况下使用上面的方法?
P.S:我在安装 graphics.h
库并配置所有链接器选项后使用代码块。等...
您引用的文件graphics.h
是positively ancient。
它太老了,早于 const
。
二十年来,字符串文字 const char[N]
。从那时起,假装它们是 char[N]
就被弃用了。从 C++11 开始,它是完全非法的。从旧的 const
天开始迁移代码已有 13 年,此后又过了 7 年。
你必须像现在这样破解它(将字符串文字复制到一个可能的可变缓冲区,即使它不会被改变!),用 const_cast
破解它( 非常确保参数不会发生变化!),或者改用这个千年的库。
如果您完全确定 outtextxy()
不会修改传递给它的字符串,您可以编写自己的包装函数,例如:
void my_outtextxy(int x, int y, const char* text) {
outtextxy(x, y, const_cast<char*>(text));
}