将const char*传递给方法,但得到char const *错误
passed in const char* to a method but got char const * error instead
我在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()
,但链接器无法在您链接的对象中找到它。这个函数在哪里定义的?你把它连起来了吗?它在那个名称空间中吗?
相关文章:
- 在字符串函数中抛出'char const*'实例后调用的终止
- 双重标准?为什么只有 char* const&a = "bla" 的警告?
- 包括"lvtocon.h",未定义对'operator<<(std::ostream&, char const*)的引用
- 为什么 const char* const & = 可以编译"hello"?
- 将字符串文本常量定义为 char const* 和 wchar const*
- 如何将std::wstring转换为char const[]
- "char const * name() const _WEBSOCKETPP_NOEXCEPT_TOKEN_ {"剂量是什么意思
- 使用提升对字符串进行标记化时,将令牌转换为 char* const* 时失败
- 如何从 std::initializer_list<char const* 构建 std::vector<std::string>>
- 将 std::vector<std::string> 转换为 const char* const*
- 引发"char const*"错误的实例后调用的终止
- 将const char * const参数成员分配给新值
- 从'const char**'到'char* const*'的转换无效
- 从 sub_match<常量字符 *>' 转换为'const char *const &'
- char*const和constchar*之间有什么区别?(重复-需要更多澄清)
- 使用工厂方法时编译器错误:无法转换"const std::p air<char* const
- HEVC 解码器端口 Android 警告:从 'signed char*' 到 'char const* 的转换无效*
- 如何从'char const*'中删除常量
- 'char const *str'作为模板参数
- 为什么不;t strlen(.)应为const char*const str,而不是const char*