[C++]オーバーロードをするとメンバの順列が変わる |
2015年01月22日02:10:12 |
|
純仮想関数のみのクラス(インターフェース)を作成しDLLを
通じて実装したクラスのインスタンスの取得を行っていました。 |
1
2
3
4
5
6
| class ITest
{
public:
virtual ~ITest(){};
virtual void Print() = 0;
}; |
ある日、機能拡張が必要となりインターフェースに
オーバーロードしたメソッドを追加しました。
最後部にメソッドを追加すれば、上位互換を保てると思い実施しましたが
オーバーロードすると仮想関数の順列が変わるようで失敗しました。 |
1
2
3
4
5
6
7
8
|
class ITest
{
public:
virtual ~ITest(){};
virtual void Print() = 0;
virtual void Print(int i) = 0;
}; |
メソッド名を変更すると上位互換を保ったまま正常に動作しました。
ご利用は計画的に! |
1
2
3
4
5
6
7
8
|
class ITest
{
public:
virtual ~ITest(){};
virtual void Print() = 0;
virtual void PrintInt(int i) = 0;
}; |
|