2016-07-27 3 views
0

Qt5プロジェクトでPresageテキスト予測プラットフォームを使用しようとしていますが、std :: stringが壊れてエラーが発生し続けます。Qt5でstd :: stringの値が壊れる

私は、このクラスの予測システムのための文字列のコンテキストを提供している

class SomeClass : public ParentClass 
{ 
public: 
    SomeClass(const std::string& _past_context) : past_context(_past_context) { } 

    std::string get_past_stream() const { 
     return past_context; 
    } 
    std::string get_future_stream() const { return empty; } 

private: 
    const std::string& past_context; 
    const std::string empty; 

}; 

このコンテキストは、このようなプレサージュコード内で呼ばれている:私はget_past_streamstd::outpast_contextを送信する場合

std::string ContextTracker::getToken(const int index) const 
{ 
    std::stringstream pastStringStream(context_tracker_callback->get_past_stream()); 
    ... 
} 

メソッドでは、正しい文字列が表示されます。 getTokenメソッドでget_past_streamの結果を送信すると、データが破損します。

UPDATE [2016年7月28日]:

は質問を明確にし、重複したタグを削除するには:Qt5を使用している場合、問題にのみ発生します。 g++でコンパイルすると、SomeClassとPresageコンテキスト呼び出し側のみで構成されるテストケースが正常に動作します。 Qt5でSTLを使用すると、文字列が戻り値として使用された後に破損することがあります。

+0

問題についていくつかの説明を追加しました。私は私の答えに新しいコメントを加えました。 – adapar

答えて

0

Qt5で戻り値としてstd::stringの通過に可能性を狭めた後、私はここで同様の問題が見つかりました:'std::string' has no member named front [closed]

Qt5が明示的にC++ 11 STLを使用するように設定されている必要がありそうです。したがって、CONFIG += c++11を追加すると、私の問題も解決しました。

+0

これがどのようにあなたの質問に答えるかはあまり明確ではありません。 – juanchopanza

+0

これは更新された質問に答えます。この問題は、C++ 11の設定オプションを有効にしないでQtを使用する場合にのみ発生します。 QtのないC++ではうまく動作します。 – adapar

関連する問題