gpt4 book ai didi

c++ - 如何将 std::vector 转换为 std::vector

转载 作者:行者123 更新时间:2023-11-28 07:33:08 26 4
gpt4 key购买 nike

我有一个 std::vector<myClass*>我想在类接口(interface)中授予 public 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来自您的返回值(<> 中的第二个)。它只会挡道。

关于c++ - 如何将 std::vector<myClass*> 转换为 std::vector<const myClass* const>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17267504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com