2016-11-22 84 views
-3

我要聲明的座標一類,我試試這個代碼:C++初始化錯誤

Coordinate.h:

typedef unsigned short Short; 
class Coordinate 
{ 
private : 
    Short _row; 
    Short _col; 
public: 
    Coordinate(Short row, Short col); 
    bool operator ==(const Coordinate* other); 
}; 

Coordinate.cpp:

#include "Coordinate.h" 

Coordinate::Coordinate(Short row, Short col) 
    : _row(row) , _col(col){} 

bool Coordinate::operator== (const Coordinate* other) 
{ 
    if (other == NULL || this == NULL) 
     return false; 
    if (this == other) 
     return true; 
    if (other->_row != this->_row || other->_col != this->_col) 
     return false; 
    return true; 
} 

主。 cpp:

#include "Coordinate.h" 
int main() 
{ 
    Coordinate a(2,2); 
} 

但視覺工作室2015年返回此錯誤:

  • 錯誤C2079 'A' 使用未定義類 '座標'

  • 錯誤C2440 '初始化':無法從 '初始化列表' 轉換爲 '詮釋'

+7

'this == NULL'將如何成爲真實? – tadman

+0

沒有顯示'initializer_list'。使用加載初始化語法實例化對象時,會創建一個「std :: initializer_list」。 –

+0

當這個人寫((Coordinate *)NULL)時,'this == NULL'是真的,你可以測試它@tadman。 –

回答

4

解決您的錯字在:

#include "Coordinate.h" 
int main() 
{ 
    Coodinate a(2,2); 
} 

Coodinate應該是Coordinate

+0

我修正了它,但問題沒解決 – Alireza

+2

@Alireza你能告訴我們新的編譯器輸出來查看錯誤嗎?它在我的系統上編譯得很好(不過由於某種原因,必須將NULL更改爲0)。 – BUCH

+1

在C++中,您[應該使用'nullptr'而不是'NULL'](http://stackoverflow.com/a/13816448/1848578)。 – qxz

0

第一個錯誤是由於拼寫錯誤Coo r dinate。可能還會修復第二個。

0

通常undefined表示編譯器找不到Coordinate.cpp文件。你有沒有檢查過你的項目設置,使鏈接器鏈接Coordinate.cpp文件到你的執行文件?