为什么我的程序对wstring错误给出模棱两可的引用?
Why is my program giving ambiguous reference to wstring error?
为什么下面的代码给出这个错误:
对' wstring '的引用有歧义;
我没有任何其他命名为wstring
的函数来引起歧义。
int wstring(string &act)
{
int i=0;
vector<int> hash;
while(act[i++]!=' ')
if(act[i]=='#')
{
hash.push_back(i);
cout<<i<<endl;
}
return i;
}
int main()
{
int cases, i;
string ws;
cin>>cases;
while(cases--)
{
getline(cin, ws);
i = wstring(ws);
cout<<i;
}
return 0;
}
在代码的开头,是否有using namespace std
?因为如果是这样,调用就有歧义。您可以通过以下命令修复:
i = ::wstring(ws);
namespace std
与std::basic_string<wchar_t>
(即std::wstring
)的类型定义名称相同。您会遇到名称冲突,因为编译器不知道您是将wstring(ws)
表示为std::wstring
对象的强制转换表达式还是函数调用。这就是为什么不推荐使用using namespace std
,以及为什么给全局命名空间中具有相似名称的对象命名会导致歧义的原因。
我假设你在文件的顶部也有
#include <string>
using namespace std;
这是对wstring存在歧义调用的地方。Wstring是用string声明的类型,编译器无法判断你是指函数Wstring,还是想创建一个Wstring类型的对象并将其转换为int。
相关文章:
- 将对象数组的引用传递给函数
- 什么时候在C++中返回常量引用是个好主意
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 何时在引用或唯一指针上使用移动语义
- 如何在c++中使用引用实现类似python的行为
- 编译C++时未定义的引用
- Ctypes wstring通过引用传递
- c++r值引用应用于函数指针
- 理解c++中的引用
- C++取消引用指针.为什么会发生变化
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 在SESHAT中,对"元组"的引用是模棱两可的
- 对结尾的引用是模棱两可的
- 如果铸造运算符对类型和引用类型的引用,为什么直接列表初始化会导致类型参考铸件的模棱两可
- C 汇编错误:对构造函数的引用是模棱两可的
- 2 第三方 C 和 C++ 库与 Object 具有相同的类和结构名称,所以我得到这个引用'Object'是模棱两可的错误
- 为什么我的程序对wstring错误给出模棱两可的引用?
- 任何对模棱两可的引用的优雅解决方案