我有一个类的std::vector<myClass*>
成员,我希望在类接口中提供公共const访问权限。要做到这一点,我希望能够写:
class myClass{
public:
myClass() { /*allocate dynamic stuff */};
virtual ~myClass() { /* delete dynamic stuff */};
//Accessors
const std::vector<const myClass * const> members() const{ //<- How do I implement?
//Compiles Fine - cit iterates over const int* objects
std::vector<myClass*>::iterator it = _members.begin();
//Does not compile
std::vector<myClass* const>::const_iterator citc= it;
//I need citc to iterate over cosnt int* const objects - How?
std::vector<const myClass * const> members_(citc, citc + _members.size()); //Compile Error
return members_;
};
/* ...moar stuff....*/
private:
/* ...moar stuff...*/
std::vector<myClass*> _members;
};
此代码是一个清理的示例脱离上下文所以我没有编译它,但在实际的代码中,我从几个屏幕长度的错误消息推断出唯一的严重问题是我需要citc迭代器迭代'const myClass * const'对象而不是'const myClass *'对象。思考?谢谢你。
答案 0 :(得分:1)
return std::vector<myClass const *>( _members.begin(), _members.end() );
从您的返回值(const
s中的第二个)中删除一个<>
。它只会阻碍它。