代码拉取完成,页面将自动刷新
同步操作将从 梁欢/TmplArgs 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
我们可以通过函数重载为同名函数实现不同参数个数的版本,如:
int max(int a, int b) { return a>b?a:b; }
int max(int a, int b, int c)
{ return max(a,b)>max(b,c)?max(a,b):max(b,c); }
我们还可以通过使用函数模板来扩展函数对参数类型的定制,如:
template<typename _T>
void debug(_T a, std::string b) { cout<<a<<b<<endl; }
template<typename _T, typename _T1>
void debug(_T a, _T1 b, std::string c) { cout<<a<<b<<c<<endl; }
然而这种规则对于类模板却并不是(至少现在不是)奏效的。如:
template<typename _T> struct Debug {
_T _a;
Debug(_T a) : _a(a) {}
void debug(std::string s) { cout<<_a<<s; }
};
template<typename _T, typename _T1> struct Debug {
_T _a;
_T1 _b;
Debug(_T a, _T1 b) : _a(a), _b(b) {}
void debug(std::string s) { cout<<_a<<_b<<s; }
};
上面的代码是不符合编译器(VS2010)规则的。也就是说我们没有办法为同名的类模板实现不同参数的版本。 那么我们有没有办法突破这个限制呢?是的,通过 TmplArgs 库,我们便获得了这种能力。
虽然 TmplArgs 的使用难度已经降到了最低,但是它仍然不完美:
首先,我们需要实现类模板的宏定义式,如 DebugBase.h。
然后,我们需要实现类模板的通用形式,如 Debug.h。
最后,我们还需要将参数规则写成函数指针的形式。
下面这段代码就是使用 TmplArgs 后对上面的 Debug 模板的改写:
Debug<void(int)> a;
a.debug(3,"0");
Debug<void(int,string)> b;
b.debug(3, "4", "0");
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。