将const char*传递给方法,但得到char const *错误

passed in const char* to a method but got char const * error instead

本文关键字:char const 错误 方法      更新时间:2023-10-16

我在c++代码中遇到了一个奇怪的问题。我使用TCLAP软件来接受命令行参数,其中一个标志是文件名:

TCLAP::ValueArg<string> Poly ("p", "poly",  "file name of the polynomial", false, "", "string");

我还有另一个接受3个参数的函数,

void GetBiPoly(const char *filename, BiPoly<BigFloat> *u, BiPoly<BigFloat> *v);

我以这种方式将Poly字符串传递给函数GetBiPoly:

benchmark::GetBiPoly(Poly.getValue().c_str(), &fxy, &gxy);
当我编译这个程序时,它给了我以下错误:
miranda.cpp:(.text+0x1900): undefined reference to `benchmark::GetBiPoly(char const*, CORE::BiPoly<CORE::BigFloat>*, CORE::BiPoly<CORE::BigFloat>*)'

似乎唯一的区别是错误信息中的文件名类型是char const*,而定义是const char*。有人能告诉我是什么问题吗?谢谢。

char const *const char *是完全一样的。你的问题与这部分信息无关。您的错误是您正在调用函数benchmark::GetBiPoly(),但链接器无法在您链接的对象中找到它。这个函数在哪里定义的?你把它连起来了吗?它在那个名称空间中吗?