链接错误与非法呼叫

link error with illegal call

本文关键字:呼叫 非法 错误 链接      更新时间:2023-10-16
CUtil<char>::input(command);

我在"main.cpp中编写了上面的代码我为该代码制作了一个头文件,如下所示。

但是我收到了以下错误消息:

C2352: 'class::function' : 非法调用非静态成员函数。

怎么了?

#ifndef CUTIL_H
#define CUTIL_H
template <typename T>
class CUtil {
public:
    void input(T& command) {
        std::cin >> command;
        if (std::cin.fail()) {
            std::cin.clear();
            std::cin.ignore(100, 'n');
        }
    }
};
#endif
错误准确地

说明了问题所在。如果要调用CUtil<char>::input(command)则需要将input设置为静态,或者有一个CUtil<char>实例来调用input

没有静态函数:

CUtil<char> myUtil;
myUtil.input(command);

使用静态函数:

template <typename T>
class CUtil {
public:
    static void input(T& command) {
       // ...
    }
};
// ...
CUtil<char>::input(command);