0

現在、コードにこれがあります。

template<typename T1> class MONEYTRANSFER {
  SOURCEACCOUNT<T1, MONEYTRANSFER> *SourceAccount;               // Line 2
  MONEYTRANSFER(T1 *src) {
    SourceAccount = new (src) SOURCEACCOUNT<T1, MONEYTRANSFER>;  // Line 4
  }
};

これがそれほど厄介ではないことはわかっていますが、少なくともこれをもう少し見栄え良くするように努めたいと思います.

2行目を変更して、「MONEYTRANSFER」がどのクラスにあるかを知ることで自動検出されるようにすることはできますか?

4 行目でプリプロセッサを使用することは可能ですか。つまり、新しい操作bind(src, SourceAccount);の型を入力しなくても - と入力できます。SourceAccount (SOURCEACCOUNT<T1, MONEYTRANSFER>)

私は試してみましdecltypeたが、運がなかったのですか?どんな助けでも感謝します!

4

1 に答える 1

1

基本クラスのミックスインで解決します:

template<typename T1, typename T2> class WithSourceAccount
{
  protected:
    SourceAccount<T1, T2>* m_SourceAccount;
    WithSourceAccount(T1* src) 
        : m_SourceAccount(new (src) SourceAccount<T1, T2>())
        { }
};

template<typename T1>
class MoneyTransfer : WithSourceAccount<T1, MoneyTransfer>
{
};
于 2012-07-08T21:42:45.560 に答える