2015-09-14 160 views
1

问题我在C++一个小白,原谅我,如果这是微不足道的。我正在尝试从make文件编译几个C++文件。我不断收到此错误:C++编译C++ 11

<i> no member named 'to_time_t' in 
     'std::__1::chrono::steady_clock'; did you mean 
     'std::chrono::system_clock::to_time_t'? 
    time_t tnow = std::chrono::high_resolution_clock::to_time_t(now); 

</i> 

然后经过一番研究,我发现,这是因为我没有使用C++ 11.我在Mac OS X 10.10.2。所以我安装了brew,然后使用brew安装了gcc和g ++ 4.9。但是,我仍然遇到同样的错误。有什么建议么?这段代码在Linux机器上运行。

任何帮助,将不胜感激。

+0

只是为了澄清,我没有确保的G ++ 4.9版本正在使用通过改变路径,并添加符号链接等 – hadis

+0

符号链接?这听起来很可疑!你是否通过添加编译器标志来设置C++ 11编译模式:'-std = C++ 11'? – Galik

+0

是的,我有一个在make文件 – hadis

回答

3

to_time_tsystem_clock的成员,但不是(必然)steady_clockhigh_resolution_clock的成员。您正在使用high_resolution_clock,它在系统上,该错误消息会,似乎是steady_clock的别名,而不是system_clock。如果代码是为你工作在其他平台上,这可能是因为该平台上,high_resolution_clocksystem_clock的别名,但你不能靠这个总是既然如此。

解决方案是只使用system_clock,如果你不想从它time_tsystem_clock应至少一样高的分辨率time_t,所以使用一个潜在的更高分辨率的时钟在这里没有买任何东西。如果你只是想要现在的时间,或者首先使用std::time函数。

+0

我不认为这是解决它,因为我能够在Linux上 – hadis

+0

@hadis运行此:我解释了为什么这可能是这种情况。你真的读过我的整个答案吗?你甚至看过'high_resolution_clock'的文档吗? –

+0

对不起,我错过了!我会尝试你的解决方案 – hadis