• C++:in namespace 'std' does not name a template type


    对于类的声明的头文件,对于include它的任何一个文件,都需要将这个类内部声明的成员需要的头文件include进去。代码如下:

    // hehe.h
    #ifndef HEHE_H
    #define HEHE_H
    class Hehe{
    public:
        Hehe() = default;
        void ShowSomthing();
        // do somthing 
    private:
        std::vector<double> vec;
    };
    #endif  
      // hehe.cpp
      #include <iostream>
      #include "hehe.h"
      void Hehe::ShowSomthing(){
          std::cout << __func__ << std::endl;
      }
      // do somthing
    // main.cpp
    #include <iostream>
    #include "hehe.h"
    using namespace std;    
    int main(){
        Hehe h;
        h.ShowSomething();
        return 0;
    }

    进行编译,由于main.cpp没有#include <vector>,将会报出错

    In file included from hehe.cpp:2:0:
    hehe.h:9:7: error: 'vector' in namespace 'std' does not name a template type
      std::vector<double> vec;
           ^~~~~~
    In file included from main.cpp:2:0:
    hehe.h:9:7: error: 'vector' in namespace 'std' does not name a template type
      std::vector<double> vec;
           ^~~~~~
    main.cpp: In function 'int main()':
    main.cpp:6:5: error: 'class Hehe' has no member named 'ShowSomething'; did you mean 'ShowSomthing'?
       h.ShowSomething();
         ^~~~~~~~~~~~~
         ShowSomthing

    之后,对于main.cpp添加#include <vector>,通过

    // main.cpp
    #include <iostream>
    #include <vector>
    #include "hehe.h"
    using namespace std;
    int main(){
        Hehe h;
        h.ShowSomething();
        return 0;
    }
  • 相关阅读:
    mysql__视图
    mysql__索引的设计和使用
    mysql————表类型(存储引擎)的选择
    mysql 常用函数
    mysql中的运算符
    HTML5 API详解(1):fullscreen全屏模式
    深入了解 Flexbox 伸缩盒模型
    BAT及各大互联网公司2014前端笔试面试题--Html,Css篇
    js运动动画
    原创:自定义三叉树
  • 原文地址:https://www.cnblogs.com/wjgrt/p/8059074.html
Copyright © 2020-2023  润新知