2

以下に 2 つの簡単なコード例を示します。最初のコードは正常にコンパイルされ、2 番目のコードはコンパイル エラーが発生します (左側の演算子 ByteVector を使用する演算子 << が見つかりません...)。

2 つの例の唯一の違いは、 using ディレクティブの配置です

なぜ失敗するのか知りたくありません(これに答えるのに十分な情報が得られませんでし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
}

追加情報:

使用される operator<< は次のように定義されます。

template<typename T>
ByteVector& operator<<(ByteVector &, const T&){...};
4

1 に答える 1

0

私の頭に浮かぶのはVisual Studioだけです。その場合はusing、対応する の直後にディレクティブを配置することをお勧めします#include。ページのコメントには次のように書かれています。

ソース コード ファイルの先頭に using ディレクティブを配置して、IntelliSense で予期しない動作が発生する可能性を減らします。

そうでなければ、違いはありません。

于 2012-09-06T08:54:22.980 に答える