2012-04-08 50 views
1

該錯誤發生在缺省的構造錯誤C2679模板類

錯誤: 錯誤C2679:二進制「=」:沒有操作員發現它採用類型「INT」的右邊的操作數(或有沒有可接受的轉換)

驗證碼:

#ifndef _SLOT_H 
#define _SLOT_H 
#include <string> 
using namespace std; 
template <class T> 
class slot 
{ 
private: 
    string key; 
    T data; 
public: 
    slot(); 
    slot(string str); 
    slot(string str, T tempdata); 
    slot(const slot &source); 
    string getkey(); 
    T getdata(); 
    void setkey(string str); 
    void setdata(T tempdata); 
}; 

template<class T> 
slot<T>::slot() 
{ 
    key = ""; 
    data = NULL; 
} 
+2

你如何實例化模板? – 2012-04-08 01:57:11

回答

5

這個問題可能是,你是一個類型T實例化模板不允許的int被分配給它。

+0

一個更糟糕的結果是將'string'作爲類型實例化類。它會編譯,但會拋出一個異常,因爲字符串使用空字符串,而不是0。 – chris 2012-04-08 02:34:34

0

我想我知道這個問題的解決方案。繼續並將主要放在一個頭文件中。您遇到

例如

應該照顧的所有指針問題採取一切內主要的代碼,並把它放在一個文件標題爲「Main.h」鏈接這對其他文件通過Linux的評論mount/dev/bin/boot。這會導致文件在啓動時被鏈接。如果您有任何其他問題可以知道。另外,在您將文件鏈接起來之後,您可能需要重新啓動才能正常工作

快樂編程!