2016-02-23 106 views
-1

雖然編譯下面的代碼我收到錯誤的參考「距離」是曖昧

參考「距離」是不明確的

#include<iostream> 
using namespace std; 
class distance 
{ 
    int feet,inches; 
    distance():feet(0),inches(0) 
    { 

    } 
    distance(int f,int i):feet(f),inches(i) 
    { 
    } 

    void show() 

    { 
     cout<<"feet "<<feet; 
     cout<<endl<<"inches "<<inches; 
    } 

    distance operator + (distance) ; 
}; 

distance distance::operator + (distance d) 
{ 
    int f,i; 
    f=feet+d.feet; 
    i=inches+d.inches; 
    return distance(f,i); 
} 

int main() 
{ 
    distance d1; 
    distance d2(2,3),d3(7,5);; 
d1=d2+d3; 
d1.show(); 
} 

誰能幫助我的錯誤。 並提供給我解決方案,併爲什麼我得到這個錯誤。

+1

這是你的真實密碼?目前,'distance'構造函數是私有的。 –

+1

由於'使用名稱空間標準符號','距離'是不明確的,因此'std :: distance'函數有效。永遠不要這樣做。 – vladon

回答

1

您的班級名稱與名稱空間中的另一個符號發生衝突,將您的班級名稱更改爲Distance之類的其他名稱將是一個可能的解決方案。

+5

我認爲刪除'using namespace std;'是一個更好的解決方法。 –

+0

那麼,無論修正的論點是什麼(是的,我傾向於同意你在這裏),找出問題可能更重要 – shafeen