我目前在我的代码中有这个。
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
但没有运气?任何帮助将不胜感激!
最佳答案
我会用基类混合来解决它:
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>
{
};
关于C++预处理器+检测对象类型和new操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11386432/