note: declarations in dependent base ‘std::basic_ios<char>’ are not found by unqualified lookup

错误信息如题所示。

修改前:

 1  template<
 2     typename _CharT,
 3     typename _Traits = std::char_traits<_CharT>
 4   >
 5     class BasicStkIos
 6     : virtual public std::basic_ios<_CharT, _Traits>
 7     {
 8     public:
 9       typedef basic_stkbuf <_CharT,_Traits>        StkBufType;
10
11       BasicStkIos()
12       : mBuf()
13       {init(&mBuf) ;};
14
15       BasicStkIos(const char* fName, std::ios::openmode m, const char* pFilter)
16       : mBuf(fName, m, pFilter)
17       { init(&mBuf) ; }
18
19       StkBufType*
20       rdbuf()
21       { return &mBuf; }
22
23     protected:
24       StkBufType  mBuf;
25     };

修改后:

 1  template<
 2     typename _CharT,
 3     typename _Traits = std::char_traits<_CharT>
 4   >
 5     class BasicStkIos
 6     : virtual public std::basic_ios<_CharT, _Traits>
 7     {
 8     public:
 9       typedef basic_stkbuf <_CharT,_Traits>        StkBufType;
10
11       BasicStkIos()
12       : mBuf()
13       {this->init(&mBuf) ;};
14
15       BasicStkIos(const char* fName, std::ios::openmode m, const char* pFilter)
16       : mBuf(fName, m, pFilter)
17       { init(&mBuf) ; }
18
19       StkBufType*
20       rdbuf()
21       { return &mBuf; }
22
23     protected:
24       StkBufType  mBuf;
25     };
时间: 2024-08-09 02:38:21

note: declarations in dependent base ‘std::basic_ios<char>’ are not found by unqualified lookup的相关文章

实战c++中的string系列--std:vector&lt;char&gt; 和std:string相互转换(vector to stringstream)

有时候也会遇到std:vector与转std:string 相互转换的情况. 首先看一下vector<char>如何转string: std::vector<char> *data = response->getResponseData(); std::string res; //方法一 for (int i = 0;i<data->size();++i) { res+=(*data)[i]; } res+='\0'; std:cout << res;

error LNK2019: 无法解析的外部符号 &quot;class std::vector&lt;class std::basic_string&lt;char,struct std::char_traits&lt;cha

error LNK2019: 无法解析的外部符号 "class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class

iOS出现 Undefined symbols for architecture armv7 std::basic_string&lt;char, std::char_traits&lt;char&gt;

Undefined symbols for architecture i386: “_OBJC_CLASS_$_XXX”, referenced from: objc-class-ref in XXX ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation) 如果真机调试就是 undefined symb

QString, Std::string, char *相互转换

Qt 库中对字符串类型进行了封装,QString 类提供了所有字符串操作方法,给开发带来了便利. 由于第三方库的类型基本上都是标准的类型,即使用std::string或char *来表示字符 (串) 类型,因此在Qt框架下需要将QString转换成标准字符 (串) 类型.下面介绍QString, Std::string, char *相互转换转换方法. std::string和char *的相互转换 1.  将char *或char[]转换为std::string 可直接赋值 std::stri

Invalid arguments &#39; Candidates are: std::basic_ostream&lt;char,std::char_traits&lt;char&gt;&gt; &amp; write(const char *, int) &#39;

const char* p = "hello itcast"; cout.write(p,strlen(p)) << endl; cout.write(p,strlen(p) - 4) << endl; cout.write(p,strlen(p) - 4) << endl; 代码十分简单,通过对比vs,得知gcc调用的是ostream.tcc文件中的write函数write(const _CharT* __s, streamsize __n). v

std::vector&lt;char&gt; 转 const char

std::stringstream oss; for(unsigned int i=0;i < buffer->size();i++){ oss<<(*buffer)[i]; } string temp=oss.str(); const char * buf=temp.c_str();

no matching function for call to ‘std::basic_string&lt;char&gt;::assign(std::string&amp;, int)

使用string中的assign赋值函数报错,代码为: text0.assign(line,i+1); 其中text0与line都为string类型 最后发现assign函数的原型为 string &assign(const char *s,int n); 将代码改为以下即可 text0.assign(line.c_str(),i+1); 附  assign函数 string &operator=(const string &s);//把字符串s赋给当前字符串 string &am

ubuntu16.04下安装NS-2.35以及对simple例的理解

本人是在VMWare上安装的ubuntu16.04版本,然后安装NS2.35. 1.下载ns2的安装包,这里我选择的是ns-allinone-2.35.tar.gz压缩格式的all in one安装包,all in one 安装包包含所有的组件,比较方便,另附下载地址: http://www.isi.edu/nsnam/ns/ns-build.html 2.安装前要先进行一些准备工作进行配置环境,输入如下代码: $sudo apt-get install build-essential $sud

ubuntu下安装ns2详细步骤

1.首先去http://www.isi.edu/nsnam/ns/ns-build.html下载ns-allinone-2.35.tar.gz 2. 拷贝到用户目录下 如 /home/mingyong/ 3. 更新一下系统 sudo apt-get update    #更新源列表 sudo apt-get upgrade   #更新已安装的包 4. 安装几个依赖文件 sudo apt-get install build-essential sudo apt-get install tcl8.5