• 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;
    }
  • 相关阅读:
    classpath:和classpath*:的区别
    Java 类装载器工作机制
    Spring 注解配置 WebApplicationContext
    IDEA Cannot access alimaven (http://maven.aliyun.com/nexus/content/groups/public/)
    Mybatis #和$区别
    重排链表
    判断环形链表并给出入环口的节点位置
    环行链表
    复制带随机指针的链表
    有序链表转换二叉搜索树
  • 原文地址:https://www.cnblogs.com/wjgrt/p/8059074.html
Copyright © 2020-2023  润新知