链接错误与非法调用

Posted

技术标签:

【中文标题】链接错误与非法调用【英文标题】:link error with illegal call 【发布时间】:2015-11-30 15:07:03 【问题描述】:
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

【问题讨论】:

【参考方案1】:

错误准确地说明了问题所在。如果你想调用CUtil&lt;char&gt;::input(command),你需要将input设为静态,或者有一个CUtil&lt;char&gt;的实例来调用input

没有静态函数:

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

使用静态函数:

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

// ...
CUtil<char>::input(command);

【讨论】:

以上是关于链接错误与非法调用的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的项目中出现三个“非法配置”错误?

setTimeout 非法调用类型错误:非法调用

FAISS 搜索失败并出现模糊错误:“非法指令”或内核崩溃

D3.js:“未捕获的语法错误:意外的令牌非法”?

链接器错误 - 不确定它没有链接

本地存储 setItem 覆盖 - 非法调用错误