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.hpositively 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));
}