C++预处理器+检测对象类型和新操作

C++ preprocessor + detecting object type and new operation

本文关键字:新操作 操作 类型 处理器 预处理 检测 对象 C++      更新时间:2023-10-16

我目前在代码中有这个。

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

虽然我知道这并没有那么乱,但我至少想试着让它看起来更好一点。

是否可以更改第2行,以便通过知道"MONETRANSFER"在哪个类中来自动检测它?

是否可以对第4行使用预处理器。因此,我可以键入bind(src, SourceAccount);-而不必为新操作键入SourceAccount (SOURCEACCOUNT<T1, MONEYTRANSFER>)的类型。

我试过decltype,但没有成功?如有任何帮助,我们将不胜感激!

我会用基类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>
{
};