Message是我自己定义的一个类。用到的库文件都写上了。
explicit Folder(std::initializer_list<const Message&>li){for(Message &temp:li)messages.insert(&temp);}
我的原意是想写一个Folder类的构造函数,这个构造函数可以接受n个Message类进行构造(是引用传递)。然后通过for循环将每个Message类对象的指针插入到Folder类的messages对象容器(容器set)中。
报错看不懂为什么说无构造begin(……)函数,initializer_list不可以把它当作类似数组一样用吗?还是其他怎么回事?
以下是写的一部分代码,没什么用的,忽略就好
class Folder;
class Message
{
private:
std::set<Folder *> folders;
std::string contents;
public:
explicit Message(const std::string&);
explicit Message(const std::string&,Folder&);
Message (const Message& temp):folders(temp.folders),contents(temp.contents){};
Message& operator=(const Message& temp){folders=temp.folders;contents=temp.contents;return *this;}
~Message();
};
inline Message::Message(const std::string& s= ""):contents(s){}
inline Message::Message(const std::string& s,Folder &f):contents(s),folders({&f}){};
class Folder
{
private:
std::set<Message*> messages;
public:
explicit Folder(Message& li){messages.insert(&li);}
explicit Folder(std::initializer_list<const Message&>li){for(Message &temp:li)messages.insert(&temp);}
Folder(const Folder&)=delete;
Folder operator=(const Folder&)=delete;
~Folder();
};
explicit Folder(std::initializer_list<Message> li) {
for (Message temp : li) { messages.insert(&temp); }
}