我一整天都没有运气......
这有效:
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进行编译。
的文档谢谢,我非常感谢任何帮助。
卡勒
更新
这是我的重建工作:
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"};
答案 0 :(得分:1)
试试这个。
std::regex pattern_array[2] = { std::regex("Test1"), std::regex("Test2") };
您需要使用构造函数显式构造,因为正则表达式类在其构造函数上使用explicit
关键字。