パラメータの型は同じだが、論理的な意味が異なる関数をオーバーライドしたい。私は次のようなことを試しました:
class T
{
};
typedef T Age;
typedef T Height;
typedef T Weight;
void foo(Age a){}
void foo(Height a){}
void foo(Weight a){}
しかし、ビルド エラーがあります: エラー C2084: 関数 'void foo(Age)' には既に本体があります
1つの解決策は次のとおりです。
class Age : public T{};
class Height : public T{};
class Weight : public T{};
しかし、この目的のためだけに名前空間を新しいクラスで埋めたくありません。
派生クラスを使用せずにこれを達成するにはどうすればよいですか?
編集: 私のコードは cpp ファイルにあり、ヘッダーは使用しません。これは簡単な例です。完全な cpp コンテンツは次のとおりです。
class T
{
};
typedef T Age;
typedef T Height;
typedef T Weight;
void foo(Age a){}
void foo(Height a){}
void foo(Weight a){}
int main()
{
return 0;
}
エラー メッセージ: .cpp(10): エラー C2084: 関数 'void foo(Age)' には既に本体があります