私が正しく理解していれば、いつでもラッパー関数を作成できます。
file.h
void DoSomething(int i);
ファイル.cpp
void DoSomething(int i)
{
ActuallyDoSomething((MyEnum)i);
}
static void ActuallyDoSomething(MyEnum myEnum)
{
// Do something
}
OOP プログラムの場合、次のようになります。
file.h
class ISomething
{
virtual void DoSomething(int i) = 0;
};
ファイル.cpp
class Something : ISomething
{
private:
void ActuallyDoSomething(MyEnum myEnum)
{
// ...
}
public:
void DoSomething(int i)
{
ActuallyDoSomething((MyEnum)i);
}
}
編集:コメントへの応答: 関数のオーバーロードを提供することをお勧めします。
file.h
void DoSomething(int i);
void DoSomething(MyEnum myEnum);
ファイル.cpp
void DoSomething(int i)
{
DoSomething((MyEnum)i);
}
void DoSomething(MyEnum myEnum)
{
// Do something
}
最終編集:このソリューションは、C++11 を使用しなくても機能するはずです。
file.h
#pragma once
enum MyEnum;
void DoSomething(int i);
void DoSomething(MyEnum enum);
FileWithMyEnum.h
#pragma once
enum MyEnum
{
One,
Two,
Three
};
ファイル.cpp
#include <file.h>
#include "FileWithMyEnum.h"
// Implementations