0

私は運がなくて一日中試しました...

これは機能します:

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"};
4

1 に答える 1

1

これを試して。

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

explicit正規表現クラスはコンストラクターでキーワードを使用するため、コンストラクターで明示的に構築する必要があります。

于 2013-05-25T22:41:41.083 に答える