Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误:';std::uu cxx11::列表<;用户>;::迭代器';{aka';struct std::_List_iterator<;User>;';}没有名为XXX的成员 我正在学习C++,但我的第一堂课出错了。我需要帮助来理解这段代码的错误_C++ - Fatal编程技术网

错误:';std::uu cxx11::列表<;用户>;::迭代器';{aka';struct std::_List_iterator<;User>;';}没有名为XXX的成员 我正在学习C++,但我的第一堂课出错了。我需要帮助来理解这段代码的错误

错误:';std::uu cxx11::列表<;用户>;::迭代器';{aka';struct std::_List_iterator<;User>;';}没有名为XXX的成员 我正在学习C++,但我的第一堂课出错了。我需要帮助来理解这段代码的错误,c++,C++,我收到以下错误消息: main.cpp:36:13: error: 'std::__cxx11::list<User>::iterator' {aka 'struct std::_List_iterator<User>'} has no member named 'printInfo' usr.printInfo(); ^~~~~~~~~ 类用户: class User { string name; publ

我收到以下错误消息:

main.cpp:36:13: error: 'std::__cxx11::list<User>::iterator' {aka 'struct std::_List_iterator<User>'} has no member named
 'printInfo'
         usr.printInfo();
             ^~~~~~~~~
用户

class User {
    string name;
    public:
        User();      
        void set_name (string in_name);     
        string get_name();
        void printInfo();
};
User::User()  { name="Unkonw"; }
void User::set_name(string in_name) { name  = in_name; }
string User::get_name() { return name; }
void   User::printInfo() { cout<<name; }

struct usrs { User usr0, usr1; };

usrs create_2user() {
    User array_usr[2];
    string str0;

    for(int i=0;i<2;i++) {
        cout<<"Enter player "<<i<<"'s name: ";
        cin>>str0;
        array_usr[i].set_name(str0);
    }
    usrs result = { array_usr[0], array_usr[1] };
    return result;
}
类用户{
字符串名;
公众:
用户();
void set_name(_name中的字符串);
字符串get_name();
void printInfo();
};
User::User(){name=“Unkonw”;}
void User::set_name(_name中的字符串){name=in_name;}
字符串用户::get_name(){return name;}

void User::printInfo(){cout您试图在迭代器上调用成员函数
printInfo
,将其调用到播放器实例,而不是用户实例。您可以通过

for( list<User>::iterator usr = playerList.begin(); usr != playerList.end(); usr++) {
    usr->printInfo();
}
如果您想对其进行过度设计,还可以开始学习
标题和

#include <algorithm>

std::for_each(playerList.cbegin(), playerList.cend(),
    std::mem_fn(&User::printInfo));

请注意,由于
printInfo()
不会改变对象的任何状态,因此应标记此成员函数
const
,并使用
const\u迭代器
,在循环的范围内,
for(const User&usr:playerList)
和算法调用
cbegin()/cend()

您尝试在迭代器上调用成员函数
printInfo
,调用的是播放器实例,而不是用户实例。您可以通过

for( list<User>::iterator usr = playerList.begin(); usr != playerList.end(); usr++) {
    usr->printInfo();
}
如果您想对其进行过度设计,还可以开始学习
标题和

#include <algorithm>

std::for_each(playerList.cbegin(), playerList.cend(),
    std::mem_fn(&User::printInfo));
请注意,由于
printInfo()
不会改变对象的任何状态,因此应标记此成员函数
const
,并使用
const\u迭代器
,在循环的范围内,
for(const User&usr:playerList)
和算法调用
cbegin()/cend()<代码> >:>代码> >列表:迭代器UR < /C> >声明<代码> UR  >是迭代器。在C++中,迭代器是一个类似于一般指针的对象,指向另一个对象(1)。。因此,必须将其视为指针:如果要访问指向的对象,必须使用
*
(访问对象)或
->
(访问对象的成员)取消迭代器的引用。因此,将
for
循环体中的语句更改为:

usr->printInfo();

(1)不同点是指针指向一个地址,而迭代器指向容器中的一个位置。

< P>::代码> UR >代码>声明<代码> UR < /C> >是迭代器。在C++中,迭代器是一个类似于一般指针的对象——指向另一个对象的对象(1)。。因此,必须将其视为指针:如果要访问指向的对象,必须使用
*
(访问对象)或
->
(访问对象的成员)取消迭代器的引用。因此,将
for
循环体中的语句更改为:

usr->printInfo();


(1) 不同之处在于指针指向一个地址,而迭代器指向容器中的一个位置。

usr->printInfo()包含源文件的可能重复通常是一个坏主意。您可以作弊并简单地将其重命名为
User.h
,尽管将所有内容都放在标题中也不好usr->printInfo()包含源文件的可能重复通常是一个坏主意。你可以作弊并简单地将其重命名为
User.h
,尽管将所有内容都放在标题中也不好