gpt4 book ai didi

c++ - 使用 C++11 shared_ptr 错误的 Eclipse 多态性

转载 作者:太空狗 更新时间:2023-10-29 23:41:05 27 4
gpt4 key购买 nike

给定以下示例代码:

#include <iostream>
#include <memory>
using namespace std;

struct A {
public:
A(int aa) : a(aa) {}
int a;
virtual ~A() {}
};
struct B : A {
public:
B(int aa, int bb) : A(aa), b(bb) {}
int b;
};

void f(shared_ptr<A> a){
shared_ptr<B> b = dynamic_pointer_cast<B>(a);
if (b) {
cout << b->b << endl;
} else {
cout << a->a << endl;
}
}

int main() {
auto a = make_shared<A>(3);
auto b = make_shared<B>(7, 4);
f(a);
f(b);
return 0;
}

eclipse提示线路有错误

f(b);

Invalid arguments ' Candidates are: void f(std::shared_ptr<A>) '
因为 shared_ptr<B>已通过。这编译并运行,并有输出:

3
4

正如预期的那样。

索引器和编译器指定了 -std=c++11。
编译器还有符号 __GXX_EXPERIMENTAL_CXX0X__定义。

有什么方法可以消除 Eclipse 中的这个错误及其红色波浪线(最好不修改源代码)?

最佳答案

这已在 CDT 的更高版本中得到修复(我刚试过)。

您可以使用此存储库使用每晚构建的 CDT:转到帮助,然后输入 url http://download.eclipse.org/tools/cdt/builds/kepler/nightly

如果您不想使用 nighty build,您至少应该确保您拥有最新发布的版本(在撰写本文时为 8.1.1),使用 http://download.eclipse.org/tools/cdt/releases/juno/

我的 C++11 eclipse 完整设置可以在这里找到: http://scrupulousabstractions.tumblr.com/post/36441490955/eclipse-mingw-builds

关于c++ - 使用 C++11 shared_ptr 错误的 Eclipse 多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13905283/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com