Fih*_*hop 3 c++ dev-c++ unique-ptr c++11
尝试编译以下代码:
#include <iostream>
#include <memory>
struct Foo {
Foo() { std::cout << "Foo::Foo\n"; }
~Foo() { std::cout << "Foo::~Foo\n"; }
void bar() { std::cout << "Foo::bar\n"; }
};
void f(const Foo &foo)
{
std::cout << "f(const Foo&)\n";
}
int main()
{
std::unique_ptr<Foo> p1(new Foo); // p1 owns Foo
if (p1) p1->bar();
{
std::unique_ptr<Foo> p2(std::move(p1)); // now p2 owns Foo
f(*p2);
p1 = std::move(p2); // ownership returns to p1
std::cout << "destroying p2...\n";
}
if (p1) p1->bar();
// Foo instance is destroyed when p1 goes out of scope
}
Run Code Online (Sandbox Code Playgroud)
使用Orwell Dev-c ++ 5.3.0.3会产生以下错误:
'unique_ptr'不是'std'的成员.
我怎么处理这个?
Orw*_*ell 10
请确保在编译时提供正确的-std标志.Orwell Dev-C++使用的默认设置(不传递任何-std选项)不会启用一些闪亮的新C++ 11函数,如unique_ptr.修复很简单:
以下是有关-std标志的更多信息:http://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#C-Dialect-Options
如您所见,GCC默认使用C++ 03的GNU方言(似乎不支持unique_ptr).
| 归档时间: |
|
| 查看次数: |
17387 次 |
| 最近记录: |