【问题标题】:Instantiate C++ function using wstring instead of wchar_t使用 wstring 而不是 wchar_t 实例化 C++ 函数
【发布时间】:2012-04-23 05:30:11
【问题描述】:

我有一个 C++ 重载函数,它的一个变体接收 wstring 作为参数,但是当我像 myfunc(L"Some text") 一样调用它时,编译器抱怨没有接受 wchar_t * 的函数变体。

我该怎么办?

稍后编辑:

Lucru();
Lucru(short,short,short,short,wstring,wstring,wstring,wstring,wstring,wstring);

这是函数在其声明中的样子。正如这所暗示的,它是一个类的构造函数......

【问题讨论】:

  • myfunc(std::wstring(L"Some text")); ?
  • 对我来说很好。你用的是什么编译器?确切的错误信息是什么? myfunc 还有哪些其他重载?你能发布一个更完整的例子吗?
  • 接受字符指针的std::basic_string constructor 不是explicit 所以myfunc(L"Some text") 应该可以工作。请发布您的函数签名和一个如何调用它的示例。 Here's 一个例子。
  • @Prætorian 我的函数实际上是一个对象构造函数,其中一个变体以wstrings 作为其一些参数。
  • @PetruDimitriu 没关系,我所说的一切仍然适用

标签: c++ function wchar-t wstring


【解决方案1】:

显式构造宽字符串:

myFunc(std::wstring(L"text"));

【讨论】:

  • @PetruDimitriu:那不可能是“它”。 std::wstring 的构造函数是隐式的,所以 myFunc(L"text") 也应该起作用,假设 myFunc 确实被声明为采用 wstring 参数。
  • 我刚刚在上面的问题声明中发布了代码。没什么特别的。
【解决方案2】:

将函数更改为通过 const 引用接受 wstring 值:

Lucru(short,short,short,short,const wstring&,const wstring&,const wstring&,const wstring&,const wstring&,const wstring&); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 2017-12-12
    • 2022-01-04
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多