gpt4 book ai didi

C++编译错误: unexpected type name 'string' : expected expression

转载 作者:行者123 更新时间:2023-11-28 01:28:34 32 4
gpt4 key购买 nike

我想使用 C++ STL 列表并使用迭代器打印所有元素。这是代码:

#include<list>
#include<algorithm>
#include<string>
using namespace std;
int main(int argc, char* argv[]){
list<string> list;
//list<double> list_double(6);
//list<int> list_int(6, 0);
//list<double> list_double2(6, 0,0);
//list<int> else_list(list_int);
//list<double> iter(list_double.begin(), list_double.end());
list.push_front("1 jack");
list.push_front("2 jackson");
list.push_front("3 sally");

list<string>::iterator itrr;
for (itrr = list.begin(); itrr!= list.end(); itrr++){
string temp = *itrr;
print(temp)nt main(int argc, char* argv[]){
list<string> list;
//list<double> list_double(6);
//list<int> list_int(6, 0);
//list<double> list_double2(6, 0,0);
//list<int> else_list(list_int);
//list<double> iter(list_double.begin(), list_double.end());
list.push_front("1 jack");
list.push_front("2 jackson");
list.push_front("3 sally");

list<string>::iterator itrr;
for (itrr = list.begin(); itrr!= list.end(); itrr++){
string temp = *itrr;
print(temp);
}
return 0;
}


}
return 0;
}

当我尝试编译它时,它显示了一些错误:

list.cpp:17:7: error: unexpected type name 'string': expected expression
list<string>::iterator itrr;
^
list.cpp:17:16: error: cannot refer to class template 'iterator' without a template argument list
list<string>::iterator itrr;
~~^
/Library/Developer/CommandLineTools/usr/include/c++/v1/iterator:522:29: note: template is declared here
struct _LIBCPP_TEMPLATE_VIS iterator
^
list.cpp:18:7: error: use of undeclared identifier 'itrr'
for (itrr = list.begin(); itrr!= list.end(); itrr++){
^
list.cpp:18:28: error: use of undeclared identifier 'itrr'
for (itrr = list.begin(); itrr!= list.end(); itrr++){
^
list.cpp:18:47: error: use of undeclared identifier 'itrr'
for (itrr = list.begin(); itrr!= list.end(); itrr++){
^
list.cpp:19:18: error: use of undeclared identifier 'itrr'
string temp = *itrr;
^

所以有什么问题吗?谢谢!

最佳答案

问题

list<string> list;

定义标识符 list成为 list<string> 类型的变量.这取代了之前标识符的定义 list作为标准库 std::list类(class)。这意味着当编译器到达 list<string> 时在代码的后面的许多点,list<string>没有意义。 <string>不匹配您可以对变量执行的任何操作。

解决方案

注意如何重用标识符。制作list名为 list会给读者和编译器造成混淆,所以不要这样做。给变量一个不同的名称。它充满了名字,所以为什么不namelist?

这个问题与 using namespace std; 的危险相吻合.有关更多信息,请阅读 Why is "using namespace std" considered bad practice?

关于C++编译错误: unexpected type name 'string' : expected expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52711194/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com