これは本当に私を夢中にさせています:
#include <iostream>
#include <vector>
#include <string.h>
#include <thread>
using namespace std;
void test() {
vector<string> myvector;
string a("Teststring");
myvector.push_back(a);
cout << myvector.begin()->length() << endl;
}
int main() {
thread(test).join();
return 0;
}
コードは、コンパイラに -std=c++11 フラグを指定し、リンカに -pthread フラグを指定して正常にコンパイルされます。
BUT: Eclipse は std::thread または myvector.begin()->length() のいずれかを知っています。
ここで考えられるすべての解決策を試しました: Eclipse CDT C++11/C++0x supportは成功しませんでした。これには何時間もかかりました。何が間違っているのでしょうか?!
このコードで問題なくプロジェクトをセットアップできる人はいますか?
編集: 他のコード例 - 同じ問題:
#include <iostream>
#include <vector>
#include <thread>
using namespace std;
class TestClass {
public:
void test() {
cout << "test" << endl;
}
};
void test() {
vector<TestClass> testClassVector;
TestClass x;
testClassVector.push_back(x);
testClassVector.begin()->test();
}
int main() {
thread(test).join();
return 0;
}
コンパイルして正常に実行されますが、Eclipse で返されます:メソッド 'test' を解決できませんでした
編集:
作業バージョン:
((TestClass)*(testClassVector.begin())).test();
TestClass foo2 = *(testClassVector.begin());
foo2.test();
まだ動作していません:
testClassVector.begin()->test();
最後のものは、上記の 2 つのようにコンパイルおよび動作しますが、Eclipse は次のように主張します。
メソッド 'test' を解決できませんでした