c++ - 在 C++ 中管理隐式类型转换

标签 c++ c type-conversion

我正在编写执行最近邻查询的代码。有两个简单的想法构成了用户如何在搜索中查询数据的基础:

  • 距离给定空间点最近的 N 个点。
  • 给定距离内的所有点。

在我的代码中,Points 被放入一个 PointList,PointList 是一个容器,负责跟踪在搜索中找到的点。

现在我的 PointList 对象有一个构造函数:

PointList( unsigned int maxvals ); // #1

接下来我要添加的两个构造函数是:

PointList( float maxdist ); // #2
PointList( unsigned int maxvals, float maxdist ); // #3

我的问题是:如何确保我的用户和 C++ 编译器生成正确的 PointList 的构造函数并区分构造函数 1 和 2? 我是否应该只实现#3 并提供定义任意大的常量 maxvals 和 maxdist 的值?另一种选择可能是编写另一个轻量级对象系统来管理将点添加到列表的逻辑,但对于这样一个简单的想法来说,这感觉有点过分了。

我真的在努力让我的用户明白这一点,他们大多是科学家,他们有时在没有接受正规教育的情况下学习了 C++。谢谢!

最佳答案

为什么不使用工厂方法而不是构造函数?工厂方法具有可自定义名称的优势。


static PointList createNearestValues(unsigned int maxvals) {}
static PointList createByDistance(float maxdist) {}

关于c++ - 在 C++ 中管理隐式类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1051089/

相关文章:

c++ - 此 C++ 代码给出了一个奇怪的警告

c++ - 默认模板模板参数的语法

c - 如何计算fork进程的位置

R中的RDF整数

c - *( (int *)ptr+1) 的含义

c++ - Visual C++ - UTF-8 - CA2W 后跟带有 MBCS 的 CW2T - 可能是个坏主意?

c++ - 如何动态创建未定义大小的对象?

c - 无法在 C 中使用 getchar 中断 while 循环

c - 将char插入char数组C(string)

c++ - 将 int 转换为 wchar_t 的正确方法是什么?