下面是两个简化的代码示例:第一个编译得很好,第二个发出编译错误(没有运算符< <找到了,它需要左手操作符ByteVector ...)。为什么使用指令的范围有所作为?
这两个示例唯一的区别在于使用指令的布局。
我不想知道失败的原因(你有没有足够的信息来回答这个问题),我只是在它为什么做任何区别在哪里放置using
感兴趣。
我会期待在这两个例子中完全相同的行为。
编译没有错误
ByteVector Test()
{
using Base::operator <<;
ByteVector foo;
int bar = 1;
foo << bar;
return foo;
}
与错误编译
using Base::operator <<;
ByteVector Test()
{
...same as above, without using
}
的额外信息:
< <使用被定义为操作员如下
template<typename T>
ByteVector& operator<<(ByteVector &, const T&){...};
“编译错误”与“不编译”不同吗? –
如果你可以发布实际的错误可能会有帮助吗? –
实际的错误是:二进制<<:没有找到操作符,它需要一个类型为ByteVector的左侧操作数,或者没有可接受的转换 – nabulke