C++ 编译器错误:P1LinkedList.cpp:145:错误:重载的"to_string(int&)"调用不明确
C++ Compiler Error: P1LinkedList.cpp:145: error: call of overloaded ‘to_string(int&)’ is ambiguous
我正在实现一个链表。我收到错误:
P1LinkedList.cpp:145: error: call of overloaded ‘to_string(int&)’ is ambiguous
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/basic_string.h:2604: note: candidates are: std::string std::to_string(long long int)
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/basic_string.h:2610: note: std::string std::to_string(long long unsigned int)
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/basic_string.h:2616: note: std::string std::to_string(long double)
(我正在使用g++ -std=c++0x
编译我的代码
引发此异常的方法:
std::string P1LinkedList::print(){
std::string print = "";
iterator itr = begin();
for(int i = 0; i < theSize; i++){
print += std::to_string(itr.current->data) + " ";
itr++;
}
return print;
}
current
是迭代器指向的当前节点。data
是 Node 类中的int
。
节点.h:
#ifndef Node_h
#define Node_h
struct Node{
int data;
Node* next;
Node* prev;
Node(const int & d = 0, Node *p = 0, Node *n = 0);
};
#endif
我的 const_iterator.h 文件的一部分,其中声明了current
(我的iterator
类从"const_iterator"类扩展而来:
protected:
Node *current;
int& retrieve() const;
const_iterator(Node*p);
friend class P1LinkedList;
};
我正在尝试将data
作为常规int
值传递to_string
,我认为itr.current->data
正在这样做,但是我可能会收到此错误,因为它不是传递数据的 int 值,而是指向它的指针?
@NathanOliver所说的是正确的,应该有一个 'int' 的模板实例化。 错误消息基本上指出,编译器不确定要使用函数的哪个"版本"(=重载(,它对输入类型long long int
unsigned long long int
long long double
具有(可能不同的(实现,但您要求它使用int
进行操作。同样,int 应该有一个重载,所以这有点奇怪。
为了在当前环境中运行程序,您可以做的是通过强制转换为int64_t来使用建议的重载之一,从而使用其中一个可用函数。
print += std::to_string(static_cast<long long int>(itr.current->data)) + " ";
参考:
在这里,您可以找到应该存在的函数列表。确保通过定义以_
在 std 命名空间中操作开头的预处理器宏来正确#include <string>
而不是调用未定义的行为,但我认为这不是这里的问题。
相关文章:
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- C++错误:"error: int aaa::bbb is protected within this context"
- 错误:从"int"到枚举c++的转换无效
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 我的 int main() 中出现堆栈溢出错误
- std::cout输出int时出现编译错误
- 在函数中使用 const int size 参数创建数组会在 Visual Studio 中抛出错误 C++:表达式的计
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 错误:"int pow(double,int)"与上一个声明int pov(double a,int
- 将 Vector<int> 推送到 Vector<vector 时出现堆溢出错误<int>>
- 使用set<set>迭代器的编译错误<int>
- 使用向量<向量>成员实例化对象时的隔离错误<int>
- 为什么我在为矢量实现这个简单的哈希时出现错误<int>?
- 错误:“int”不是类、结构或联合类型
- 错误:“int”之前应为不合格的id
- c++错误int i=0不起作用
- 声明语法错误int main()
- C++错误:“int”之前应为主表达式
- 数组下标错误'int[int]'的类型无效
- 错误:"int"之前应为主表达式