说我有以下代码:
的 class.h
#ifndef CLASS_H
#define CLASS_H
class Class
{
private:
std::regex* regex;
};
#endif
class.cpp
#include <regex>
#include "class.h"
// ...
编译此结果会导致以下错误:
error: "regex" in namespace "std" does not name a type
std::regex* regex;
^~~~~
然而,我能够以任何其他方式使用std :: regex库吗? 在GCC 6.1.1上运行。还尝试使用-std = C ++ 11标志显式编译。
答案 0 :(得分:4)
#ifndef CLASS_H
#define CLASS_H
#include <regex>
class Class
{
private:
std::regex* regex;
};
#endif
如果你真的在你的班级中包含了这个库,那么工作正常。
答案 1 :(得分:0)
使用课程有几种方法: 第一种方法是在首次使用之前包括该类的头文件。 如果您不想包含标头,可以使用forward declaration但是对于std类,它可能会导致未定义的行为。 以下是对std类使用前向声明的示例: Forward declare an STL container?