I guess it's pretty self explanatory - I can't seem to use C++11 features, even though I think I have everything set up properly - which likely means that I don't.
Here's my code:
#include <cstdlib> #include <iostream> class Object { private: int value; public: Object(int val) { value = val; } int get_val() { return value; } void set_val(int val) { value = val; } }; int main() { Object *obj = new Object(3); std::unique_ptr<Object> smart_obj(new Object(5)); std::cout << obj->get_val() << std::endl; return 0; }
Here's my version of g++:
ubuntu@ubuntu:~/Desktop$ g++ --version g++ (Ubuntu/Linaro 4.7.3-2ubuntu1~12.04) 4.7.3 Copyright (C) 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Here's how I'm compiling the code:
ubuntu@ubuntu:~/Desktop$ g++ main.cpp -o run --std=c++11 main.cpp: In function ‘int main()’: main.cpp:25:2: error: ‘unique_ptr’ is not a member of ‘std’ main.cpp:25:24: error: expected primary-expression before ‘>’ token main.cpp:25:49: error: ‘smart_obj’ was not declared in this scope
Note that I've tried both -std=c++11
and -std=c++0x
to no avail.
I'm running Ubuntu 12.04 LTS from a flash drive on an Intel x64 machine.
You need to include header where unique_ptr
and shared_ptr
are defined
#include <memory>
As you already knew that you need to compile with c++11
flag
g++ main.cpp -o run -std=c++11 // ^
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With