我使用的是Visual Studio2010 sp1。在Windows7中使用c++和boost 1.47
我有以下代码:
typedef boost::variant<unsigned int,int,long,double,bool,string,istringstream,int32_t,
uint32_t,int64_t,uint32_t,sql::SQLString> SQLVariant;我还试着用istream替换istringstream。我确实得到了以下错误:
Error 13 error C2249: 'std::basic_ios<_Elem,_Traits>::operator =' :
no accessible path to private member declared in virtual base 'std::basic_ios<_Elem,_Traits>'
c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream 860如果我声明了istringstream i,我就不会得到这个错误。如果我声明istream i2,我也会收到类似的错误;
我做错了什么?
我之所以需要istream或派生类,是因为我正在处理一个sql库。具体地说,对于mysql实现,我需要一个istream或istringstream来调用setBlob...
我发现了一个临时的变通方法,允许传递一个字符串,并用字符串初始化字符串流。但是,如果我的变体类型可以接受istreamstream或更好的istream,那就更好了
谢谢,弗兰克
发布于 2012-07-12 22:20:27
引用自Boost.Variant:
对绑定类型的要求是as follows
std::istringstream是不可复制构造的。
https://stackoverflow.com/questions/11453538
复制相似问题