2014-04-20 171 views
0

我有一個「poly」類和一個「node」類。類poly由鏈接的節點列表構成。我試圖將一個poly傳遞給一個函數「printPoly」,它將允許我打印鏈接的節點列表。但我無法訪問節點的變量...訪問類變量時遇到問題

這裏是我的代碼:

class Node 
{ 
private: 
double coeff; 
int exponent; 
Node *next; 

public: 
Node(double c, int e, Node *nodeobjectPtr) 
{ 
    coeff = c; 
    exponent = e; 
    next = nodeobjectPtr; 
} 
}; 


class poly 
{ 
private: 
Node *start; 
public: 
poly(Node *head) /*constructor function*/ 
{ 
    start = head; 
} 

void printPoly(); //->Poly *p1 would be the implicit parameter 
}; 

void poly :: printPoly() 
{ 

poly *result = NULL; 
result = this; 
double c; 
int e; 
Node *result_pos = res->start; //create ptr to traverse linked nodes 

    while(result_pos!= NULL) 
    { 
c = result_pos->coeff; // I CANT ACCESS THESE??? 
    e = result_pos->exponent; 

    printf(....); 

    result_pos = result_pos->next; //get next node (also can't access "next") 
    } 

我認爲這事做的事實,「_係數,指數和未來」是節點類的私有變量。但是,因爲我的聚類是由節點組成的,它不應該能夠訪問它們嗎?

+0

我想你應該看看'friend'關鍵字。有關詳細信息,請參閱此問題:[什麼時候應該在C++中使用'friend'?](http://stackoverflow.com/questions/17434/when-should-you-use-friend-in-c) – DaoWen

+0

請讓你的班級'Node'沒有任何訪問控制的結構定義(可能在'poly'中有作用域,除非你認爲它有自己的價值)。這讓你所有的煩惱都消失了。 – Deduplicator

+0

@Deduplicator - 這是一個很好的觀點。將所有字段標記爲「const」並將它們公開爲最好。 – DaoWen

回答

2

類中的私有變量和函數只能由該類中的函數訪問。 任何你想從課外使用的東西(例如你現在的樣子)都必須是公開的。