我必须处理的相关接口代码由两个函数组成,一个函数检索对象,另一个函数将对象作为矢量提交。问题是,检索函数返回const Object*,但是submit函数期望const vector<Object*>。
我知道这可以用解决const_cast<Object*>,但是还有其他更清洁的方法吗?
这是演示问题的代码:
#include <vector>
//////////// REPRESENTATIVE INTERFACE IMPLEMENTATION, DO NOT TOUCH ///////
struct Object{};
class Interface{
public:
size_t getNumObjects() const {return 10;}
const Object* getObject(size_t index) const {return nullptr;}
};
const Interface interface;
void submitObjects(const std::vector<Object*> &objects);
//////////////////////////////////////////////////////////////////////
// Task: take all objects from 'interface' and submit them to 'submitObjects'.
int main(){
std::vector<const Object*> objects;
for(size_t i = 0; i < interface.getNumObjects(); i++){
const Object* object = interface.getObject(i);
objects.push_back(object);
}
submitObjects(objects); …Run Code Online (Sandbox Code Playgroud)