1. 程式人生 > >C++:in namespace 'std' does not name a template type

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

post 內部 頭文件 pub mea 代碼 ++ med col

對於類的聲明的頭文件,對於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;
}

進行編譯,將會報出錯

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 ,通過

// main.cpp
#include <iostream>
#include <vector>
#include "hehe.h"
using namespace std;
int main(){
    Hehe h;
    h.ShowSomething();
    return 0;
}

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