2010-09-28 62 views
1

我遇到了這個指針在自定義類中的問題。我的代碼如下所示。'this'指針的錯誤

class Foo{ 
    public: void bar(); bool baz(); 
}; 

bool Foo::baz(){ 
    return true; 
} 
void Foo::bar(){ 
    bool is_baz = (*this).baz(); 
} 

正如我上面所說,我相信我得到的錯誤(LNK2019)是來自這個。我認爲它是在一個不同的文件中尋找一個函數,它找不到。有什麼方法可以讓代碼工作,還是我必須使用某種解決方法?如果是這樣,我該如何解決這個問題。謝謝。

+1

你爲什麼不直接叫'baz()'?鏈接器發出的確切錯誤是什麼? – 2010-09-28 16:19:38

+0

並非所有的C++編譯器都使用相同的錯誤編號。爲編譯器命名或給出錯誤消息的文本。我猜在這:http://msdn.microsoft.com/en-us/library/799kze2z(v=vs.80).aspx但它只是一個猜測。 – 2010-09-28 16:20:45

+0

你想告訴我們LNK2019是什麼?它指的是什麼?提到什麼符號?或者你想讓我們用ESP進行調試? – abelenky 2010-09-28 16:25:06

回答

6
class Foo(){ 

更改爲

class Foo{ 

而且,這不應該編譯。你是如何設法得到鏈接錯誤的?

進行此更改後,鏈接器說undefined reference to 'main',這意味着您沒有main函數。

+6

是的,這強烈暗示代碼片段不是實際的代碼,而是一個亂碼的重寫版本,這會使其很難提供幫助。 – 2010-09-28 16:23:59

0

雖然這不是一個錯誤,該行

bool is_baz = (*this).baz(); 

不需要(*this)部分。它可以簡單地寫爲

bool is_baz = baz(); 

但是,什麼是計算is_baz如果沒有使用它,也不返回點?