11125


アプリ制作のためにXcodeでC++を使っています。boost::optionalを使用していますが、

> '...' is a protected member of  
>  'boost::optional_detail::optional_base>'

というエラーが8個出ます。...は、以下のtypedefのvalue_type, reference_type, ... にあたります。

[code]

    template<class T>
    class optional : public optional_detail::optional_base<T>
    {
        typedef optional_detail::optional_base<T> base ;
    
      public :
    
        typedef optional<T> this_type ;
    
        typedef BOOST_DEDUCED_TYPENAME base::value_type           value_type ;
        typedef BOOST_DEDUCED_TYPENAME base::reference_type       reference_type ;
        typedef BOOST_DEDUCED_TYPENAME base::reference_const_type reference_const_type ;
    #ifndef  BOOST_NO_CXX11_RVALUE_REFERENCES
        typedef BOOST_DEDUCED_TYPENAME base::rval_reference_type  rval_reference_type ;
        typedef BOOST_DEDUCED_TYPENAME base::reference_type_of_temporary_wrapper reference_type_of_temporary_wrapper ;
    #endif
        typedef BOOST_DEDUCED_TYPENAME base::pointer_type         pointer_type ;
        typedef BOOST_DEDUCED_TYPENAME base::pointer_const_type   pointer_const_type ;
        typedef BOOST_DEDUCED_TYPENAME base::argument_type        argument_type ;
    
[/code]

また、my_template_classですが、

[code]

    template<class T> class my_template_class
    {
    private:
      T member_;
      ...
    }
    
[/code]

という風に定義されていて、

> Field has incomplete type 'テンプレート引数に入れたクラス名'

というコンパイルエラーも出ています。どのように解決すればよいでしょうか。


CC BY-SA 3.0
2015-06-08T10:17:46.560
11122
2015-06-08T11:04:53.047
10054
question
c++ boost
boost::optional 使用時のコンパイルエラー 'value_type' is a protected member of 'boost::optional_detail::optional_base<my_template_class<my_class>>'


コメントと同じものですが、ここに書かさせていただきます。  
std::shared_ptrを使用していたものをboost::optionalに変更した時に起きたので、Tの型のサイズが決定できなくなってしまったことが問題で‌​した。ありがとうございました。


CC BY-SA 3.0
2015-06-08T11:04:53.047
11125
2015-06-08T11:04:53.047
10054
11122
answer