2013-04-07 54 views
0

我想重載我的課的一部分到string,我無法讓重載工作。另外,我也會有一個long long過載,但我只是假設它將與long long相同,而不是string重載一個簡單=運算符

class FileData 
{ 
public: 
    string extensions_;     
    unsigned long long containsBytes_;  
}; 

string& operator = (string& s , FileData& fd) 
{ 
    s= fd.extensions_; 
    return s; 
} 

string extName = fileVector[0]; 

我一直得到的錯誤是錯誤:'operator ='必須是成員函數。 我也試過使用istream,但也沒有工作。

有人知道我該怎麼辦?

+1

錯誤信息是否不夠清楚? – 2013-04-07 20:39:48

+0

(顯式)轉換運算符或函數將起作用。你不能在'std :: string'中添加一個函數來讓你的類被賦值(或者copy-construction,這就是你要做的)。 – chris 2013-04-07 20:41:11

回答

4

爲了能夠分配給您的類的字符串,你需要一個轉換操作符

class FileData 
{ 
public: 

    // Conversion to string 
    operator string() const {return extensions_;} 

    string extensions_;     
    unsigned long long containsBytes_;  
}; 

只能重載賦值運算符作爲您的類的成員,以便爲該類的對象分配

+0

謝謝,那工作 – Protonblast 2013-04-07 21:00:41

3

您不能重載std :: string的operator =。你可能想要的是一個類型轉換操作:

class FileData 
    { 
    public: 
     string extensions_; 
     unsigned long long containsBytes_; 

     operator string() 
     { 
      return extensions_; 
     } 
    }