簡體   English   中英

如何轉換std :: vector <myClass*> 到std :: vector <const myClass* const> ?

[英]How to cast std::vector<myClass*> to std::vector<const myClass* const>?

我有一個std::vector<myClass*>成員,我想在類接口中提供公共const-access權限。 為此,我希望能夠編寫:

    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 *'對象。 有什么想法嗎? 謝謝你。

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

並從您的返回值中刪除該const<>的第二個const )。 它什么也沒做,只是妨礙了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM