我仍在探索 C++,试图弄清楚它是如何工作的,并遇到了令我困惑的事情。
我有一个只包含 alist<string>
并具有一些成员函数的类
class String_list {
public:
String_list(istream&);
//other functions
list<string> listing;
};
我写了我的构造函数来使用非成员函数
String_list::String_list(istream& in) { get_strings(in, listing); }
和
istream& get_strings(istream& in, list<string> lstring)
{
if(in) {
lstring.clear();
string word;
while (in >> word)
lstring.push_back(word);
in.clear();
}
return in;
}
问题是,虽然该get_string
函数似乎可以工作,但它并没有改变listing
我传递给它的成员变量。
我可以通过更改为 来创建get_strings
一个带有一个参数的成员函数来使其工作,所以我假设从构造函数传递列表由于某种原因不起作用,或者非成员函数不能更改成员变量,但这些似乎是我的编译器很容易掌握的东西。(istream& in)
lstring
listing
我的编译器没有发现代码有任何问题,只是当我运行成员列表始终.size()
为 0 的可执行文件时。