如何将std :: vector <myclass *>转换为std :: vector <const myclass * =“”const =“”>?</const> </myclass *>

时间:2013-06-24 03:10:53

标签: c++

我有一个类的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 *'对象。思考?谢谢你。

1 个答案:

答案 0 :(得分:1)

return std::vector<myClass const *>( _members.begin(), _members.end() ); 

从您的返回值(const s中的第二个)中删除一个<>。它只会阻碍它。