1

VS2005 用に翻訳する必要がある大規模な Visual Studio 6 C++ プロジェクトを継承しました。一部のクラスでは operator< および operator[] が定義されていますが、宣言で戻り値の型が指定されていません。VS6 ではこれが許可されていますが、VS2005 では許可されていません。

C 標準では、通常の関数のデフォルトの戻り値の型が int であると指定されていることは承知しており、VS6 がそれに従っていた可能性があると想定しましたが、これは C++ 演算子にも適用されますか? または、VS6 は独自に戻り値の型を把握できますか?

たとえば、コードは次のようなカスタム文字列クラスを定義します。

class String {
  char arr[16];
  public:
    operator<(const String& other) { return something1 < something2; }
    operator[](int index) { return arr[index]; }
};

VS6 は単純に両方の戻り値の型を int として配置するか、または operator[] が char を返し、operator< が bool を返す必要があることを理解するのに十分スマートでしたか (両方の結果を常に int に変換しないでください) ?

もちろん、このコードを VS2005 C++ に準拠させるために戻り値の型を追加する必要がありますが、プログラムの動作をすぐに変更しないように、以前と同じ型を指定するようにしたいと思います (現時点では互換性を確保する予定です。後で標準化します)。

4

1 に答える 1

1

operator<デフォルトで a を返しboolます。

operator[]デフォルトで返さintれますが(私はそう思います)、コレクションに含まれるものを返すようにほぼ確実に変更する必要があります。上記の文字列の例では、それはcharまたはになりwchar_tます。

于 2010-02-16T16:24:29.247 に答える