参加以下课程:
function login($post='')
{
$this->db->where(array('email' => $post['email'], 'password' => $post['password']));
$query = $this->db->get('users');
return $query->row_array();
}
假设我使用template <class T>
class Foo
{
private:
T x;
public:
Foo(T y) { x = y; }
T bar();
};
或Foo()
类型对象初始化int
。我希望double
对这两种类型的行为有所不同。我想简单的解决方法是让bar()
调用另一个模板函数来响应bar()
的类型,但是在没有定义嵌套函数的情况下,可能还有另一种通用方法。?
注意:我不希望x
以bar()
为参数,我希望x
保持私密状态只需x
可以调用。
答案 0 :(得分:1)
最简单的方法是
#include <type_traits>
template <class T>
class Foo
{
private:
T x;
public:
Foo(T y) { x = y; }
T bar() {
if(std::is_same<T, int>::value) {
return 0;
} else {
return 0.0;
}
}
};
有更多方法可以做到这一点。例如,您可以专门化该课程。
提示:如果你不想检查int和double,但对于整数类型和浮点类型,也有特征。