在底层示例中:如何避免方法get_Children会抱怨返回类型不正确?
或者使用编译器语言:
test.cpp:在成员函数std::vector<A, std::allocator<A> > B::getVector() const
中:
test.cpp:38:错误:传递const Box<A>
this
std::vector<T,std::allocator<_CharT> > Box<T>::get_Children() [with T = A]
参数丢弃限定符
#include <vector>
using namespace std;
template <class T> class Box
{
private:
std::vector<T> m_data;
public:
Box() {};
virtual ~Box() {}
void Add(T const &d);
void Remove();
T get_Child(size_t i) const;
size_t get_ChildCount() const;
std::string get_ChildNames() const;
std::vector<T> get_Children() { return m_data; }
};
class A
{
public:
A();
~A();
};
class B
{
private:
Box<A> m_Container;
B(const B &orig);
public:
B();
~B();
std::vector<A> getVector() const { return m_Container.get_Children();}
};
int main()
{
B b;
std::vector<A> a_vector;
a_vector = b.getVector();
return 0;
}
答案 0 :(得分:4)
将Box<T>::get_Children()
声明为const
。因为B::getVector()
是const,所以它无法访问B
成员的非const函数。