c++ - 为什么此模板代码中需要 static 关键字?

标签 c++ templates static

正在处理模板函数的简单示例。代码按预期编译和工作。但我的问题是为什么“Cmp”和“Lit”都需要“static”?否则编译不通过?

非常感谢!

template<class T> class Cmp{
public:
    static int work(T a, T b) {
        std::cout << "Cmp\n";
        return 0;
    }
};

template<class T> class Lit{
public:
    static int work(T a, T b){
        std::cout << "Lit\n"  ;   
        return 0;
    }
};

template<class T, class C>
int compare(const T &a, const T &b){
    return C::work(a, b);
}


void test9(){
    compare<double, Cmp<double> >( 10.1, 20.2);
    compare<char, Lit<char> >('a','b');
}

最佳答案

C::work(a, b) 命名类 C 的静态成员函数 work()

关于c++ - 为什么此模板代码中需要 static 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7535462/

相关文章:

c++ - OpenCV - 如何以 Mat 形式编写 IplImage 数组?

c++ - 模板类的嵌套类中的Friend运算符

C 编程使用静态函数将华氏温度转换为摄氏度误差

c++ - C++ 中 IsA() 的意义何在?

c++ - 如何使用 C++ 正确计算 BMP 图像中每个像素的字节数?

c++ - 如何将 string.erase() 与指针一起使用?

c++ - 实现 is_constexpr_copiable

c++ - 编译器是否足够聪明,可以优化具有与静态方法参数相同的成员的仿函数?

c++ - 强制函数内的静态常量在开始时进行评估?

javascript - 在node.js中,如何声明一个可以被master进程初始化并被worker进程访问的共享变量?