[英]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.