0
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
4

1 回答 1

0

该错误准确地说明了问题所在。如果你想打电话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);
于 2015-11-30T15:09:34.237 回答