10

I am having trouble compiling with chrono, here is the code:

Time.hh

#include <chrono> class Time { protected: std::chrono::steady_clock::time_point _start_t; std::chrono::steady_clock::time_point _now; std::chrono::steady_clock::time_point _time; public: Time(); Time(const Time &other); Time &operator=(const Time &other); ~Time(); public: void start(); double getDurSec(); double getDurMilSec(); private: void setNow(); }; 

Compilation error:

g++ -W -Wall -Wextra -I./include -std=c++0x -c -o src/Time/Time.o src/Time/Time.cpp In file included from src/Time/Time.cpp:11:0: ./include/Time/Time.hh:21:3: error: ‘steady_clock’ in namespace ‘std::chrono’ does not name a type ./include/Time/Time.hh:22:3: error: ‘steady_clock’ in namespace ‘std::chrono’ does not name a type ./include/Time/Time.hh:23:3: error: ‘steady_clock’ in namespace ‘std::chrono’ does not name a type src/Time/Time.cpp: In member function ‘void Time::start()’: src/Time/Time.cpp:34:2: error: ‘_time’ was not declared in this scope src/Time/Time.cpp:34:23: error: ‘std::chrono::steady_clock’ has not been declared 

Etc...

Tell me if you need more informations.

3
  • It probably won't help but you should not use lead underscore when naming your variables (_start_t, _now...) Commented May 13, 2013 at 9:29
  • 3
    @jules They aren't in a global namespace, so they are ok. Commented May 13, 2013 at 9:31
  • 2
    What version of g++ are you using, on which operating system? Commented May 13, 2013 at 9:40

1 Answer 1

13

You are probably using a g++ version prior to 4.7.0 where std::chrono::steady_clock was not implemented. If this is the case, you have two solutions:

  • Upgrade your g++ to 4.7.0 or a more recent version.
  • Use instead the old std::chrono::monotonic_clock.
Sign up to request clarification or add additional context in comments.

8 Comments

[12:09]camill_a@/home/camill_a[4]$ g++ -v [...] gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
Is g++4.7 a wide used version? Is this stable? I am currently installing it this way askubuntu.com/questions/168947/how-to-upgrade-g-to-4-7-1
And a last comment, what are the differences betwin monotonic and steady?
@Mayerz Consider yourself lucky. My school still uses g++ 3.4 :)
@Mayerz - monotonic_clock was in early drafts of the chrono specification. It was replaced by steady_clock, which has more useful semantics.
|