小编Fin*_*nis的帖子

将const *存储在const向量中

我必须处理的相关接口代码由两个函数组成,一个函数检索对象,另一个函数将对象作为矢量提交。问题是,检索函数返回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)

c++ const vector c++11 c++14

3
推荐指数
2
解决办法
124
查看次数

标签 统计

c++ ×1

c++11 ×1

c++14 ×1

const ×1

vector ×1