我目前在我的代码中。
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
但没有运气吗?任何帮助将不胜感激! 最佳答案
我用一个基类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>
{
};