4

重複の可能性:
パラメーターとしてtypedefエイリアスを使用してメンバーメソッドをオーバーロードする

私は次の方法 void setField(char x);と別のオーバーロードされた方法を持っていますvoid setField(int8_t x); これは以外のすべてのプラットフォームでコンパイルさsolarissolaris int8_tますtypedef as char

この問題を解決する方法はありますか?名前を変更したくないので、次のmethod ようなコンパイラエラーが発生しますmethod already exists

4

2 に答える 2

2

これを解決する方法はありません。typedefは、同じタイプの単なる別名です。ただし、オーバーロードできるのはさまざまなタイプのみです。したがって、あなたの場合、コンパイラはsetField(char x)を参照します。

なぜこれらの2つの方法が必要なのですか?sizeof(char)は標準では1であるため、これらの名前に実際の違いはありません。

于 2012-05-15T06:29:45.477 に答える
0

int_8を認識しません。stdint.hにはint8_tがあります。あなたはそれを試しましたか?それ以外の場合は、int_8を定義するSolarisでヘッダーファイルを見つけ、適切なプリプロセッサ定義を使用してSolarisビルドで条件付きで除外します。

于 2012-05-15T06:22:42.610 に答える