我正在使用Visual Studio 2010 sp1。在Windows 7中使用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 ...
我找到了一个临时解决方法,允许传递一个字符串并用字符串初始化stringstream。但是,如果我的变体类型可以采用istreamstream或更好,istream
将会很好谢谢, 弗兰克
答案 0 :(得分:2)
引自Boost.Variant:
对有界类型的要求为as follows:
std :: istringstream不是可复制构建的。