在C 中,我如何在下面的示例中成功将类别链接在一起
In c++ how do I successfully chain classes together in the following example?
在C 中如何在以下示例中成功将类链接在一起?
Clock timer;
std::cout << timer.getElapsedTime().inSeconds();
std::cout << timer.getElapsedTime().inMilliseconds();
如何成功编写代码?
class ElapsedTime
{
private:
double _start;
public :
ElapsedTime(double start)
{
_start = start;
}
double inSeconds() const
{
return (std::clock() - _start ) / (double) CLOCKS_PER_SEC;
}
double inMilliseconds() const
{
return ((std::clock() - _start ) / (double) CLOCKS_PER_SEC) * 1000;
}
};
class Clock
{
private:
std::clock_t _start;
double _duration;
public:
Clock()
{
_start = std::clock();
}
ElapsedTime getElapsedTime() const {
return ElapsedTime(_start);
}
double reset()
{
_duration = (std::clock() - _start ) / (double) CLOCKS_PER_SEC;
_start = std::clock();
return _duration;
}
};
编辑:通过PM100进行建议的更改
尽管类链仍然返回一个类似.7E-05
的值,如果我尝试以以下方式使用const,我会得到一个分割故障
ElapsedTime const& getElapsedTime() const {
return ElapsedTime(_start);
如果要以这种方式使它起作用,这很奇怪。您需要一个用于start
class ElapsedTime
{
double _start;
public :
ElapsedTime(double start)
{
_start = start;
}
(在代码的其余部分中使用_start)
然后在时钟
ElapsedTime getElapsedTime() const {
return ElapsedTime(start);
}
您的变量" start"在类时钟的范围内声明。它在您的类大量范围内未定义。
为什么不定义时钟类中的方法弹出时间,而不是使用2个类?
如果我正在编写此代码,我可能不会使ElapsedTime
自己的类。我想我只会在Clock
类中添加getElapsedTimeInSeconds()
和getElapsedTimeInMilliseconds()
,就像:
class Clock
{
public:
Clock()
{
start = std::clock();
}
double getElapsedTimeInSeconds() const
{
return (std::clock() - start) / (double) CLOCKS_PER_SEC;
}
double getElapsedTimeInMilliseconds() const
{
return getElapsedTimeInSeconds() * 1000;
}
double reset()
{
duration = (std::clock() - start) / (double) CLOCKS_PER_SEC;
start = std::clock();
return duration;
}
protected:
std::clock_t start;
private:
double duration;
};
,然后是主要功能:
int main(void)
{
Clock timer;
std::cout << timer.getElapsedTimeInSeconds() << std::endl;
std::cout << timer.getElapsedTimeInMilliseconds() << std::endl;
}
相关文章:
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 将图形属性与 std::unique_ptr 捆绑在一起
- 你能在 c++ 中将不同的数字类型加在一起吗?
- 如何将两个字符串加在一起,就好像它们是变量一样?
- 当返回语句时,逗号运算符、大括号初始化列表和 std::unique_ptr 组合在一起
- 为什么push_back和emplace_back结合在一起时,会有不同的行为
- 在浮点精度成为一个问题之前,可以将多少个浮点值加在一起
- 为什么在template函数广播中把两个extensor表达式加在一起不正确
- 实现具有浮点键的类似哈希表的数据结构,其中公差内的值被合并在一起
- 如何在Qt TableView中将列的宽度调整为数据并将最后一部分拉伸在一起
- 编译器如何将链表中的地址字符串在一起?
- 在 c++ 中,两个日志行与 log4Cxx 混合在一起
- 如何将两个 jlong 数据类型转换为 jstring,然后将两个字符串连接在一起以便从 JNI 将字符串返回给 jav
- 将许多向量排序在一起
- C++ std:: 并包括它们如何组合在一起?
- 通过字符串迭代并将每个循环中的先前字符组合在一起
- CMake 项目结构:如何正确地将库合并在一起并将它们包含在多个可执行文件中
- C 操作员超载将3个向量加在一起
- 有没有一种干净(更)的方法将 CRTP 与可变参数继承混合在一起?
- 在C 中,我如何在下面的示例中成功将类别链接在一起