2015-11-30 38 views
0
CUtil<char>::input(command); 

我在「main.cpp」 中編寫了上面的代碼,並且我爲該代碼創建了一個頭文件,該代碼寫在下面。非法呼叫鏈接錯誤

但我收到以下錯誤消息:

C2352:「類::功能」:非靜態成員函數的非法調用。

什麼問題?

#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 

回答

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);