2013-03-10 30 views
1

遇到問題,但我試圖使用鏈表來實現堆棧,我的Node結構是我的ListStack類的私有數據。當我嘗試在我的main.cpp中使用Node時,它說Node是未聲明的標識符。順便說一句,我使用這個堆棧和一切實現RPN計算器,我有3個文件calculator.h,calculator.cpp和main.cpp(如果有關的話)即使我包含我的.h文件(C++)

這裏是結構:

struct Node 
{ 
    double data; 
    Node* under; 
}; 

Node* top; 

我已經包含.h文件(calculator.h)與#include "calculator.h"

不承認是Node* current= top;它也不能識別頂部的第一個語句。有什麼理由呢?如果我沒有收錄足夠的信息,我對這個網站很陌生。

+0

什麼是'top'在你的代碼? – 2013-03-10 17:39:05

+0

@ another.anon.coward它的類型是'Node *' – 2013-03-10 17:39:43

+0

對不起我的壞!在縮進前錯過了聲明部分。 – 2013-03-10 17:42:40

回答

2

如果你的結構是一類的私有變量,你不能把它的那樣,你需要像

MyClass::Node mynode; 
+0

我這樣做,它清除了未聲明的問題,但現在它告訴我,我的數據是私人的。我應該只是公開我的結構?或者是否有可能將main.cpp聲明爲朋友? – Thomas 2013-03-10 17:59:00

+0

您不要將文件聲明爲朋友,您可以將類聲明爲另一個類的朋友,以便朋友類可以訪問其他類的私有成員。您需要將其公開化,或者相反,您可能需要從該類中取出結構。所有領域都是公共結構。 – 2013-03-11 08:48:51

+0

感謝所有的幫助,我已經找到了答案,有沒有辦法將此標記爲已回答?或者我只是刪除它? – Thomas 2013-03-25 23:45:04

相關問題