私はまだC++を調べて、それがどのように機能するかを理解しようとしていて、私を困惑させる何かに出くわしました。
を保持するだけのクラスがlist<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
で1つの引数を持つメンバー関数を作成することで機能させることができるので、コンストラクターからのリストの受け渡しが何らかの理由で機能しないか、非メンバー関数が機能しないと思いますメンバー変数を変更しますが、これらは私のコンパイラーが簡単に理解できるようなもののようです。(istream& in)
lstring
listing
.size()
メンバーリストが常に0である実行可能ファイルを実行したときだけ、コンパイラはコードに問題を認識しません。