【发布时间】:2012-03-05 23:16:44
【问题描述】:
我定义了一个类Movie。而那个类有一个
static set<Movie> movies;
我还有一个静态成员函数:
static Movie& find_by_title(string);
我返回一个参考,因为我想在找到电影后对其进行修改(我想给它评分)。所以,在实现中我有
Movie& Movie::find_by_title(string title) {
set<Movie>::iterator it;
for (it = movies.begin(); it != movies.end(); ++it)
if (it->title == title) return *it;
}
但是它返回一个错误,因为*it 的类型是const Movie(并且函数返回Movie&)。但是然后如何以我可以更改的方式获取该元素?指针也可以,任何可以在之后更改元素的东西。
movies.find(*it) 也将一个迭代器返回到 const Movie,因此当我尝试返回 *(movies.find(*it)) 时它也不起作用。
【问题讨论】:
-
您不能合法地获得对
std::set<>元素的非常量引用。 -
我希望你不打算在这个元素存储在
std::set之后再改变它 -
是的,我打算改变它。我希望那个集合像一个数据库(当然只是一个临时的)。我尝试通过写入和读取磁盘上的文件来实现“数据库”,但是在 C++ 中文件对我来说太复杂了,所以我选择了这种方法。
-
这为我清除了一切,谢谢。将其发布为答案,以便我接受。