我有一个std::vector<myClass*>
成员,我想在类接口中授予公共常量访问权限。要做到这一点,我想能够写:
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 my Class*"对象。想法?非常感谢。
return std::vector<myClass const *>( _members.begin(), _members.end() );
并从返回值(<>
s中的第二个)中删除那个const
。它只会挡道。