我有一个这样的 C++ 类:
class Example {
public:
int getSomeProperty(int id) const;
private:
lazilyLoadSomeData();
}
基本上getSomeProperty()
返回一些已经使用加载的数据lazilyLoadSomeData()
。由于我不想在需要之前加载此数据,因此我在其中调用此方法getSomeProperty()
int Example::getSomeProperty(int id) const {
lazilyLoadSomeData(); // Now the data is loaded
return loadedData[id];
}
这不起作用,因为 lazilyLoadSomeData() 不是 const。即使它只更改可变数据成员,编译器也不会允许它。我能想到的唯一两个解决方案是:
在类构造函数中加载数据,但我不想这样做,因为延迟加载所有内容会使应用程序更快。
使
lazilyLoadSomeData()
常量。它会起作用,因为它只更改可变成员,但它似乎并不正确,因为从名称来看,该方法显然正在加载某些内容并且显然正在进行一些更改。
关于什么是处理这个问题的正确方法的任何建议,而不必欺骗编译器(或完全放弃 const 正确性)?