实例化basic_regex类型的数组时出错

时间:2013-05-25 22:39:02

标签: c++

我一整天都没有运气......

这有效:

std::regex pattern ("Test");

这不起作用:

std::regex pattern_array[2] {"Test1", "Test2"};

生成错误:

mainprog.cpp:534:47: error: could not convert ‘(const char*)"Test1"’ from ‘const char*’ to ‘std::regex {aka std::basic_regex<char>}’

mainprog.cpp:534:47: error: could not convert ‘(const char*)"Test2"’ from ‘const char*’ to ‘std::regex {aka std::basic_regex<char>}’

我尝试创建一个与std::regex具有相同结构的类,但我无法重新创建错误(它完美地运行)。

我正在使用在Linux上运行的gcc 4.7.2进行编译。

std::regex

的文档

谢谢,我非常感谢任何帮助。

卡勒

更新

这是我的重建工作:

class testclass
{
public:
    testclass(const char* s, bool b = true);
};

testclass::testclass(const char* s, bool b)
{
    printf("Bool %d", b);
}

testclass obj1 ("Test");
testclass obj2[2] {"Test1", "Test2"};

1 个答案:

答案 0 :(得分:1)

试试这个。

std::regex pattern_array[2] = { std::regex("Test1"), std::regex("Test2") };

您需要使用构造函数显式构造,因为正则表达式类在其构造函数上使用explicit关键字。