给出两个函数,如此
inline V2T<Int16> GS(float x, float y, int xOff, int yOff, Uint8 f = 0x00);
inline V2T<Int16> GS(float x, float y, int xOff, int yOff, int maxW = -1, int maxH = -1, Uint8 f = 0x00);
对于像GS(float,float,int,int)
这样的情况,重载明显不明确有没有办法为这样的情况指定默认重载?除了GNU C ++编译器之外,我不必兼容任何东西,因为我已经使用了几个独特的约定。 理想情况下,像
inline V2T<Int16> GS(... , Uint8 f = 0x00) __default;
inline V2T<Int16> GS(... , int maxW = -1, int maxH = -1, Uint8 f = 0x00);
使编译器自动解析,支持第一个(__default)函数。
我所看到的所有问题都是针对新手第一次遇到这个错误,所以这可能已被回答但被埋没了。提前谢谢!
答案 0 :(得分:6)
试试这个
inline V2T<Int16> GS(float x, float y, int xOff, int yOff, Uint8 f = 0x00);
// this one is not default one
template <class = void>
inline V2T<Int16> GS(float x, float y, int xOff, int yOff, int maxW = -1, int maxH = -1, Uint8 f = 0x00);
您可以看到结果here
答案 1 :(得分:3)
最明显的解决方法是
inline V2T<Int16> GS(float x, float y, int xOff, int yOff, Uint8 f = 0x00);
inline V2T<Int16> GS(float x, float y, int xOff, int yOff, int maxW, int maxH = -1, Uint8 f = 0x00);
因为您的意图是maxW
实际上无法获得默认值。