这真的让我发疯:
#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 标志正常编译。
但是:Eclipse 确实知道 std::thread 或 myvector.begin()->length(),即使代码运行良好 eclipse 也会警告我"Method 'length' could not be resolved"。
我在这里尝试了所有可能的解决方案: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 中返回:无法解析方法“测试”
编辑:
工作版本:
((TestClass)*(testClassVector.begin())).test();
TestClass foo2 = *(testClassVector.begin());
foo2.test();
还是行不通:
testClassVector.begin()->test();
最后一个编译并像上面两个一样工作,但 eclipse 仍然声称:
方法“测试”无法解决