具有内部函数的类模板对于不同的输入表现不同

时间:2017-02-23 08:55:53

标签: c++

参加以下课程:

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()的类型,但是在没有定义嵌套函数的情况下,可能还有另一种通用方法。?

注意:希望xbar()为参数,我希望x保持私密状态只需x可以调用。

1 个答案:

答案 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,但对于整数类型和浮点类型,也有特征。