gpt4 book ai didi

C++ 从本地类型派生

转载 作者:可可西里 更新时间:2023-11-01 18:09:56 25 4
gpt4 key购买 nike

在某些 C++ 代码中,我使用整数来存储大量变化的数据。为了分析我的程序,我想记录一些变量的某些变化,例如某个值被赋值的频率,以及该赋值冗余的频率(新值与旧值相同)。

如果类型是 Foo 类,我将派生一个新的 LoggingFoo 并将我的日志记录数据添加到我感兴趣的成员函数中,然后调用父成员函数。我必须更新我的代码才能使用新类型,但只要我最初与 typedef 保持一致,这就是单行更改。

我的问题是我要添加日志记录的变量是一个整数。您不能从 C++ 中的内置类型派生(可以吗?)

我的问题是是否有从基本类型(int、float、double 等)派生的巧妙方法。

解决方案可能是定义一个新类,该类有效地是一个 int。它定义了 int 可以执行的每个操作,并将该操作应用于私有(private) int数据成员。这个策略会奏效,但也许其他人已经制作了这样一个类,我可以只使用“fakeint.h”头文件定义。在我自己实现之前,在某处是否已经存在这样的“代理 native 类包装器”类型定义?

我当然意识到我的代理 int 不能与 int 互换使用,特别是因为现有函数定义都需要一个 int.. 但对于我的应用程序,这一切都在一个内部循环中,它正在做很多简单的 native +-*^= 操作,不用作函数参数或任何东西。

最佳答案

你不能从 int 派生一个类,但你应该能够通过实现 Coplein 的具体数据来创建一个可以与 int 互换的类(例如 Integer)类型成语来自 Advanced C++: Programming Styles and Idioms然后通过将类型转换运算符从 Integer 重载到 int 并定义从 intInteger 的转换运算符。

这是另一个描述基本 Idioms 的链接摘自本书

还有一个我认为与您正在寻找的内容非常接近的链接 http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Int-To-Type

关于C++ 从本地类型派生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1183554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com