C++ 奇怪的 char* 参数问题(不兼容的类型)

标签 c++ parameters compiler-errors char

我在使用 char* 作为参数时遇到了一个小问题。我以前从未遇到过这个问题,但我似乎无法找到它现在发生的原因。 “应该完全没问题”的一个小例子:

void foo(char* param)
{
    return;
}

foo("hello world");

这不起作用,因为我们收到错误:

cannot convert argument 1 from 'const char [12]' to 'char *'

我环顾四周,但找不到任何东西。我也尝试过更改字符集,但没有成功。我创建了一个新项目,但同样的事情发生了。我可能在某处更改了设置吗?

我试图添加适用于基本示例但不适用于我的模板的常量

void Setup()
{
    Find<MyClass>("function.dll", "function");
}

template <class i>
i* Find(const char* module, const char* name)
{
    return nullptr;
}

这给了我一些我从未见过的东西:

Conversion from string literal loses const qualifier (see /Zc:strictStrings)

最佳答案

字符串文字是 char const *,而不是 char *。编译器在这里是正确的。如果你想要一个可修改的字符数组,你可以这样做:

void foo(char *) { }
char buf[] = {"hello, world"};
foo(bar);

关于C++ 奇怪的 char* 参数问题(不兼容的类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48039036/

相关文章:

c++ - 从其他头文件实现结构

c++ - 用 C++ 扩展 Job/Worker 多线程系统

url - Elasticsearch:URL的聚合

c - MPI_Irecv 类型转换需要错误

Swift:将四个 Double 变量相乘时出错

c++ - C++ STL中的优先级队列

c++ - boost::asio::ip::tcp::socket 已连接?

c - 在 C 函数中使用 EOF 读取用户输入并修改数组?

batch-file - 使用参数包含等号的批处理文件覆盖 .INI 文件

c++ - 在 Debug模式下构建 Qt 5.10 时 MSVC 编译器崩溃