我一直在处理一个小型库集合,在我的 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/