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

我会用一个基类 mixin 来解决它:

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 回答