c++ - C/C++ - 整数与指针冲突

标签 c++ pointers int

我一直在处理一个小型库集合,在我的 n 维几何 vector 模板类中,我遇到了两个构造函数之间的问题。构造函数 VectorN( t data[n] ) 与构造函数 VectorN( t value ) 冲突,我得到错误:

More than one instance of constructor ___ matches the argument list".

我理解为什么会发生这种情况,但我找不到解决方案。仅当我尝试使用 VectorN(0) 实例化该类时才会出现此问题,但当 value 不是 0 时,将使用正确的构造函数。我该怎么做才能解决这个问题?

最佳答案

问题是 0 是一个有效的空指针常量,它是一个有效的 T*(这实际上是 t data[n] 在幕后)。如果您真的想获取原始 C 数组,请使用对数组的引用 - 这是强类型和安全的 (r)。

此外,原始 C 数组很糟糕。 std::array 适用于您不想出现段错误的情况。

关于c++ - C/C++ - 整数与指针冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32128912/

相关文章:

c++ - Qt 中的面向切面编程

c++ - 使用指针显示数组的值

c - c指针和内存表示形式

c - 将 C 指针打印为 %i 和 %u

java - 在操作 MM/DD/YYYY 格式时,如何获取月份(破折号之前的所有 #)

c++ - 转换 C++ 层次结构以使用静态多态性

c++ - Linux 3.14 关闭过早退出程序的文件句柄时的策略

c++ - 用递归区分偶数和奇数

C++ Clean String to int 转换

c - 查找 C 中 N 个案例之间的偶数