我一直在研究一个小的库集合,在我的n维几何矢量模板类中,我遇到了两个构造函数之间的问题。构造函数VectorN( t data[n] )与构造函数VectorN( t value )冲突,并且出现错误:

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


我知道为什么会这样,但是我无法找到解决方案。仅当我尝试使用VectorN(0)实例化该类时,才会出现此问题,但是当value不同于0时,将使用正确的构造函数。我该怎么做才能解决此问题?

最佳答案

您不正确地声明了接受C样式数组的构造函数-您正在丢失大小。如果正确执行此操作:

template <class T>
class VectorN {
public:
    template<std::size_t N>
    VectorN( T (&array)[N] );
    ...
};

那么0的问题就会消失。

08-26 14:20