为什么std :: regex不是有效类型?

时间:2016-09-09 00:53:14

标签: c++ regex c++11 g++ libstdc++

说我有以下代码:
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标志显式编译。

2 个答案:

答案 0 :(得分:4)

#ifndef CLASS_H
#define CLASS_H

#include <regex>

class Class
{
    private:
        std::regex* regex;
};

#endif

如果你真的在你的班级中包含了这个库,那么工作正常。

Example

答案 1 :(得分:0)

使用课程有几种方法: 第一种方法是在首次使用之前包括该类的头文件。 如果您不想包含标头,可以使用forward declaration但是对于std类,它可能会导致未定义的行为。 以下是对std类使用前向声明的示例: Forward declare an STL container?