2011-07-25 55 views
0

在下面的示例中:我如何避免get_Children方法會抱怨返回類型不正確?如何正確地返回類A元素的向量?

或在編譯器語言:

TEST.CPP:在成員函數std::vector<A, std::allocator<A> > B::getVector() const: TEST.CPP:38:錯誤:使const Box<A>作爲std::vector<T,std::allocator<_CharT> > Box<T>::get_Children() [with T = A]丟棄限定符

this參數
#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; 
} 

回答

4

聲明Box<T>::get_Children()const。因爲B::getVector()是const,所以它不能訪問B成員上的非const函數。