gpt4 book ai didi

c++ - 隐藏容器的类的更好接口(interface)

转载 作者:行者123 更新时间:2023-11-30 04:32:39 36 4
gpt4 key购买 nike

我有MyClass将容器隐藏在其中,我想控制何时将新项目添加到容器以及何时从容器中删除项目,但我不需要控制只读操作,例如 getter 函数

class MyClass {
protected:
std::vector<MySubClass> subclasses;
public:
}

用于与 MyClass 的用户交互,我应该实现接口(interface)功能,例如:

addSubClass() , getSubClassAt(int ) , getSubClassIndex(MySubclass ) , delSubClass() .

或者最好只返回 const 迭代器,用于只读操作:

std::vector<MySubClass>::const_iterator getSubclassIterator() ;

并提供特殊的写操作函数如

addSubClass() , delSubClass() .

或者有比这些更好的方法吗?

最佳答案

如果您发明自己的成员函数来操作对象的内部列表,那么当我想使用您的类时,我将不得不学习您的接口(interface)。

我更愿意你使用我已经知道的标准库的约定,这样我就可以立即使用你的类:

class MyClass {
protected:
std::vector<MySubClass> subclasses;
public:
typedef std::vector<MySubClass>::const_iterator const_iterator;

const_iterator begin() const {return subClasses.begin();}
const_iterator end () const {return subClasses.end ();}

void insert(const_iterator where, const MySubClass& obj);
iterator erase(iterator pos);
iterator erase(iterator begin, iterator end);

// ...
}

关于c++ - 隐藏容器的类的更好接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7485593/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com