2012-10-18 142 views
2

我真的不明白髮生了什麼。我使用的是MSVC 2012,升壓51.此代碼預計做工精細,但它不會編譯:Boost :: variant無法解析運算符<< for std :: ostream

#include "stdafx.h" 
#include <string> 
#include <boost/variant/recursive_variant.hpp> 

namespace NsSemSDK 
{ 

struct STreeConstructionRuleRegexp { 
    std::string m_strEntity; 
}; 

struct STreeConstructionRuleString { 
    std::string m_strEntity; 
}; 

struct STreeConstructionRuleIdentifier { 
    std::string m_strEntity; 
}; 

typedef int STreeConstructionRuleNumber; 

typedef boost::variant<STreeConstructionRuleRegexp, STreeConstructionRuleNumber> STreeConstructionRuleOperand; // STreeConstructionRuleString, STreeConstructionRuleIdentifier 

} 

std::ostream& operator<<(std::ostream& stream, const NsSemSDK::STreeConstructionRuleRegexp& val) 
{ 
    return stream << '\'' << val.m_strEntity << '\''; 
} 

std::ostream& operator<<(std::ostream& stream, const NsSemSDK::STreeConstructionRuleString& val) 
{ 
    return stream << '"' << val.m_strEntity << '"'; 
} 

std::ostream& operator<<(std::ostream& stream, const NsSemSDK::STreeConstructionRuleIdentifier& val) 
{ 
    return stream << val.m_strEntity; 
} 

using namespace NsSemSDK; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    STreeConstructionRuleNumber num = 1024; 
    STreeConstructionRuleOperand operand = num; 
    std::cout << operand << std::endl; 
} 

什麼我得到的是:

1>------ Build started: Project: ConsoleApplication3, Configuration: Debug Win32 ------ 
1> Source.cpp 
1>c:\users\vsevolod.sauta\documents\visual studio 2012\projects\consoleapplication3\consoleapplication3\boost\variant\detail\variant_io.hpp(64): error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'const T0' (or there is no acceptable conversion) 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(695): could be 'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)' [found using argument-dependent lookup] 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(742): or  'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)' [found using argument-dependent lookup] 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(780): or  'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)' [found using argument-dependent lookup] 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(827): or  'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)' [found using argument-dependent lookup] 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(953): or  'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const signed char *)' [found using argument-dependent lookup] 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(960): or  'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,signed char)' [found using argument-dependent lookup] 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(967): or  'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const unsigned char *)' [found using argument-dependent lookup] 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(974): or  'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,unsigned char)' [found using argument-dependent lookup] 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(984): or  'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>,T>(std::basic_ostream<_Elem,_Traits> &&,const _Ty &)' [found using argument-dependent lookup] 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char>, 
1>    T=T0, 
1>    _Ty=T0 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(1101): or  'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const std::error_code &)' [found using argument-dependent lookup] 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\users\vsevolod.sauta\documents\visual studio 2012\projects\consoleapplication3\consoleapplication3\boost\blank.hpp(93): or  'std::basic_ostream<_Elem,_Traits> &boost::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const boost::blank &)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(201): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ostream<_Elem,_Traits> &(__cdecl *)(std::basic_ostream<_Elem,_Traits> &))' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(207): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ios<_Elem,_Traits> &(__cdecl *)(std::basic_ios<_Elem,_Traits> &))' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(214): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::ios_base &(__cdecl *)(std::ios_base &))' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(221): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::_Bool)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(241): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(short)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(275): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned short)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(295): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(int)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(320): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned int)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(340): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(long)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(360): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned long)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(381): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(__int64)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(401): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned __int64)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(422): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(float)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(442): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(double)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(462): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(long double)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(482): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(const void *)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\program files (x86)\microsoft visual studio 11.0\vc\include\ostream(502): or  'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_streambuf<_Elem,_Traits> *)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   while trying to match the argument list '(std::basic_ostream<_Elem,_Traits>, const T0)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char> 
1>   ] 
1>   c:\users\vsevolod.sauta\documents\visual studio 2012\projects\consoleapplication3\consoleapplication3\boost\variant\variant.hpp(859) : see reference to function template instantiation 'void boost::detail::variant::printer<OStream>::operator()<const T>(const T &) const' being compiled 
1>   with 
1>   [ 
1>    OStream=std::basic_ostream<char,std::char_traits<char>>, 
1>    T=T0 
1>   ] 
1>   c:\users\vsevolod.sauta\documents\visual studio 2012\projects\consoleapplication3\consoleapplication3\boost\variant\variant.hpp(859) : see reference to function template instantiation 'void boost::detail::variant::printer<OStream>::operator()<const T>(const T &) const' being compiled 
1>   with 
1>   [ 
1>    OStream=std::basic_ostream<char,std::char_traits<char>>, 
1>    T=T0 
1>   ] 
1>   c:\users\vsevolod.sauta\documents\visual studio 2012\projects\consoleapplication3\consoleapplication3\boost\variant\detail\visitation_impl.hpp(130) : see reference to function template instantiation 'void boost::detail::variant::invoke_visitor<Visitor>::internal_visit<const T>(T &,int)' being compiled 
1>   with 
1>   [ 
1>    Visitor=boost::detail::variant::printer<std::basic_ostream<char,std::char_traits<char>>>, 
1>    T=T0 
1>   ] 
1>   c:\users\vsevolod.sauta\documents\visual studio 2012\projects\consoleapplication3\consoleapplication3\boost\variant\detail\visitation_impl.hpp(130) : see reference to function template instantiation 'void boost::detail::variant::invoke_visitor<Visitor>::internal_visit<const T>(T &,int)' being compiled 
1>   with 
1>   [ 
1>    Visitor=boost::detail::variant::printer<std::basic_ostream<char,std::char_traits<char>>>, 
1>    T=T0 
1>   ] 
1>   c:\users\vsevolod.sauta\documents\visual studio 2012\projects\consoleapplication3\consoleapplication3\boost\variant\detail\visitation_impl.hpp(173) : see reference to function template instantiation 'void boost::detail::variant::visitation_impl_invoke_impl<Visitor,VoidPtrCV,T>(int,Visitor &,VoidPtrCV,T *,boost::mpl::true_)' being compiled 
1>   with 
1>   [ 
1>    Visitor=boost::detail::variant::invoke_visitor<boost::detail::variant::printer<std::basic_ostream<char,std::char_traits<char>>>>, 
1>    VoidPtrCV=const void *, 
1>    T=T0 
1>   ] 
1>   c:\users\vsevolod.sauta\documents\visual studio 2012\projects\consoleapplication3\consoleapplication3\boost\variant\detail\visitation_impl.hpp(256) : see reference to function template instantiation 'void boost::detail::variant::visitation_impl_invoke<Visitor,VoidPtrCV,T0,NoBackupFlag>(int,Visitor &,VoidPtrCV,T *,NoBackupFlag,int)' being compiled 
1>   with 
1>   [ 
1>    Visitor=boost::detail::variant::invoke_visitor<boost::detail::variant::printer<std::basic_ostream<char,std::char_traits<char>>>>, 
1>    VoidPtrCV=const void *, 
1>    NoBackupFlag=boost::variant<NsSemSDK::STreeConstructionRuleRegexp,NsSemSDK::STreeConstructionRuleNumber>::has_fallback_type_, 
1>    T=T0 
1>   ] 
1>   c:\users\vsevolod.sauta\documents\visual studio 2012\projects\consoleapplication3\consoleapplication3\boost\variant\variant.hpp(1803) : see reference to function template instantiation 'void boost::detail::variant::visitation_impl<first_which,first_step,Visitor,VoidPtrCV,boost::variant<T0_,T1>::has_fallback_type_>(const int,const int,Visitor &,VoidPtrCV,boost::mpl::false_,NoBackupFlag,Which *,step0 *)' being compiled 
1>   with 
1>   [ 
1>    Visitor=boost::detail::variant::invoke_visitor<boost::detail::variant::printer<std::basic_ostream<char,std::char_traits<char>>>>, 
1>    VoidPtrCV=const void *, 
1>    T0_=NsSemSDK::STreeConstructionRuleRegexp, 
1>    T1=NsSemSDK::STreeConstructionRuleNumber, 
1>    NoBackupFlag=boost::variant<NsSemSDK::STreeConstructionRuleRegexp,NsSemSDK::STreeConstructionRuleNumber>::has_fallback_type_, 
1>    Which=first_which, 
1>    step0=first_step 
1>   ] 
1>   c:\users\vsevolod.sauta\documents\visual studio 2012\projects\consoleapplication3\consoleapplication3\boost\variant\variant.hpp(1825) : see reference to function template instantiation 'void boost::variant<T0_,T1>::internal_apply_visitor_impl<Visitor,const void*>(int,int,Visitor &,VoidPtrCV)' being compiled 
1>   with 
1>   [ 
1>    T0_=NsSemSDK::STreeConstructionRuleRegexp, 
1>    T1=NsSemSDK::STreeConstructionRuleNumber, 
1>    Visitor=boost::detail::variant::invoke_visitor<boost::detail::variant::printer<std::basic_ostream<char,std::char_traits<char>>>>, 
1>    VoidPtrCV=const void * 
1>   ] 
1>   c:\users\vsevolod.sauta\documents\visual studio 2012\projects\consoleapplication3\consoleapplication3\boost\variant\variant.hpp(1825) : see reference to function template instantiation 'void boost::variant<T0_,T1>::internal_apply_visitor_impl<Visitor,const void*>(int,int,Visitor &,VoidPtrCV)' being compiled 
1>   with 
1>   [ 
1>    T0_=NsSemSDK::STreeConstructionRuleRegexp, 
1>    T1=NsSemSDK::STreeConstructionRuleNumber, 
1>    Visitor=boost::detail::variant::invoke_visitor<boost::detail::variant::printer<std::basic_ostream<char,std::char_traits<char>>>>, 
1>    VoidPtrCV=const void * 
1>   ] 
1>   c:\users\vsevolod.sauta\documents\visual studio 2012\projects\consoleapplication3\consoleapplication3\boost\variant\variant.hpp(1847) : see reference to function template instantiation 'void boost::variant<T0_,T1>::internal_apply_visitor<boost::detail::variant::invoke_visitor<Visitor>>(boost::detail::variant::invoke_visitor<Visitor> &) const' being compiled 
1>   with 
1>   [ 
1>    T0_=NsSemSDK::STreeConstructionRuleRegexp, 
1>    T1=NsSemSDK::STreeConstructionRuleNumber, 
1>    Visitor=boost::detail::variant::printer<std::basic_ostream<char,std::char_traits<char>>> 
1>   ] 
1>   c:\users\vsevolod.sauta\documents\visual studio 2012\projects\consoleapplication3\consoleapplication3\boost\variant\variant.hpp(1847) : see reference to function template instantiation 'void boost::variant<T0_,T1>::internal_apply_visitor<boost::detail::variant::invoke_visitor<Visitor>>(boost::detail::variant::invoke_visitor<Visitor> &) const' being compiled 
1>   with 
1>   [ 
1>    T0_=NsSemSDK::STreeConstructionRuleRegexp, 
1>    T1=NsSemSDK::STreeConstructionRuleNumber, 
1>    Visitor=boost::detail::variant::printer<std::basic_ostream<char,std::char_traits<char>>> 
1>   ] 
1>   c:\users\vsevolod.sauta\documents\visual studio 2012\projects\consoleapplication3\consoleapplication3\boost\variant\detail\variant_io.hpp(88) : see reference to function template instantiation 'void boost::variant<T0_,T1>::apply_visitor<boost::detail::variant::printer<OStream>>(Visitor &) const' being compiled 
1>   with 
1>   [ 
1>    T0_=NsSemSDK::STreeConstructionRuleRegexp, 
1>    T1=NsSemSDK::STreeConstructionRuleNumber, 
1>    OStream=std::basic_ostream<char,std::char_traits<char>>, 
1>    Visitor=boost::detail::variant::printer<std::basic_ostream<char,std::char_traits<char>>> 
1>   ] 
1>   c:\users\vsevolod.sauta\documents\visual studio 2012\projects\consoleapplication3\consoleapplication3\boost\variant\detail\variant_io.hpp(88) : see reference to function template instantiation 'void boost::variant<T0_,T1>::apply_visitor<boost::detail::variant::printer<OStream>>(Visitor &) const' being compiled 
1>   with 
1>   [ 
1>    T0_=NsSemSDK::STreeConstructionRuleRegexp, 
1>    T1=NsSemSDK::STreeConstructionRuleNumber, 
1>    OStream=std::basic_ostream<char,std::char_traits<char>>, 
1>    Visitor=boost::detail::variant::printer<std::basic_ostream<char,std::char_traits<char>>> 
1>   ] 
1>   c:\users\vsevolod.sauta\documents\visual studio 2012\projects\consoleapplication3\consoleapplication3\source.cpp(47) : see reference to function template instantiation 'std::basic_ostream<_Elem,_Traits> &boost::operator <<<char,std::char_traits<char>,NsSemSDK::STreeConstructionRuleRegexp,NsSemSDK::STreeConstructionRuleNumber,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>(std::basic_ostream<_Elem,_Traits> &,const boost::variant<T0_,T1> &)' being compiled 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char>, 
1>    T0_=NsSemSDK::STreeConstructionRuleRegexp, 
1>    T1=NsSemSDK::STreeConstructionRuleNumber 
1>   ] 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

我不知道什麼是T0類型,爲什麼它流向T0。我期望它是boost :: variant的內部特性。但我仍然沒有任何線索,爲什麼到達那裏:運營商「< <」爲所有類型的變體定義。

回答

3

您應該在命名空間NsSemSDK中定義operator<<,以便可以通過ADL找到這些函數。 (Example

#include <string> 
#include <iostream> 
#include <boost/variant.hpp> 

namespace NsSemSDK 
{ 

struct STreeConstructionRuleRegexp { 
    std::string m_strEntity; 
}; 

struct STreeConstructionRuleString { 
    std::string m_strEntity; 
}; 

struct STreeConstructionRuleIdentifier { 
    std::string m_strEntity; 
}; 

typedef int STreeConstructionRuleNumber; 

std::ostream& operator<<(std::ostream& stream, 
         const STreeConstructionRuleRegexp& val) 
{ 
    return stream << '\'' << val.m_strEntity << '\''; 
} 

std::ostream& operator<<(std::ostream& stream, 
         const STreeConstructionRuleString& val) 
{ 
    return stream << '"' << val.m_strEntity << '"'; 
} 

std::ostream& operator<<(std::ostream& stream, 
         const STreeConstructionRuleIdentifier& val) 
{ 
    return stream << val.m_strEntity; 
} 

typedef boost::variant< 
    STreeConstructionRuleRegexp, 
    STreeConstructionRuleNumber 
> STreeConstructionRuleOperand; 

// STreeConstructionRuleString, STreeConstructionRuleIdentifier 
} 

using namespace NsSemSDK; 

int main() 
{ 
    STreeConstructionRuleNumber num = 1024; 
    STreeConstructionRuleOperand operand = num; 
    std::cout << operand << std::endl; 
} 

輸出

+0

沒錯,就是工作。 C++是非常複雜的語言。 :-) – svv

相關問題