【发布时间】:2019-02-19 11:31:45
【问题描述】:
我有一个带有重载operator + 的类以供添加。我希望用它来添加一个整数类型及其整数成员之一。但是,候选模板被忽略了。这样做的正确方法是什么?
#include <iostream>
using namespace std;
template <class T>
class A
{
public:
A(uint32_t a = 0)
: _a(a)
{ }
template <class TT, typename std::enable_if<std::is_integral<TT>::value>::type>
TT operator + (TT right) { return _a + right; }
private:
uint32_t _a;
};
class AT : public A<AT>
{
public:
AT() : A(10) { }
};
int main()
{
AT at;
cout<< (at + 10);
return 0;
}
【问题讨论】:
-
_a(_a)?不应该是_a(a)吗? -
@P.W 应该,已编辑。
-
关于using namespace std...
标签: c++ templates operator-overloading overloading