パスワードを忘れた? アカウント作成
452614 journal

etsavの日記: 無名クラス

日記 by etsav

C++ で抽象クラスのテストをしたかったと思ぃねぃ。

当然ながら抽象クラスそのもののオブジェクトはインスタンス化出来ませぬので、 純粋仮想関数をてきとーに実装した導出クラスを作らなければならないわけで。 まぁ普通にテストクラスの中に nested class を作ればいいわけですけど。

Java だったら無名クラスが使えるよなーとか思い出して、 あ、 無名クラス自体は C++ にもあるよなーとか連想して、 それって構造体タグの省略と文法上は一緒だよなーとか考えて、 それなら関数の中にも書けるはずだよなーとか文法を調べて……

こんなの書いてみました:

#include <iostream>

using namespace std;

class AbstractBase
{
public:
  virtual ~AbstractBase() {};
  virtual void func(void) = 0;
};

int main(
  int argc,
  char* argv[]
)
{
  class : public AbstractBase
  {
  public:
    virtual void func(void) { cout << "func() implemented." << endl; };
  } derived;

  derived.func();

  return 0;
}

ちゃんと動いてる……な。 new 出来ないのでスコープの外にオブジェクトを持ち越せないから、 使い勝手は悪いけど、 それは同じやり方で無名導出クラスのインスタンスをメンバーに持てば解決……

でも、 テストコード以外では気持ち悪くて使えそうにないのゎ気の所為だろーか。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs

読み込み中...