如何将 std::vector<myClass*> 转换为 std::vector<const myClass* const>?

  • 本文关键字:myClass const vector std 转换 c++
  • 更新时间 :
  • 英文 :


我有一个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。它只会挡道。

最新更新