OK,可以說我有這樣的:C++訪問的東西了側類
class A:
{
Public:
int dd;
}
好吧,那麼我有這個類:
class B:
{
Public:
void sss(){ ff=dd; }
int ff;
}
好了,問題是,B類沒有按」不知道dd是什麼。我怎樣才能讓B班知道呢?
OK,可以說我有這樣的:C++訪問的東西了側類
class A:
{
Public:
int dd;
}
好吧,那麼我有這個類:
class B:
{
Public:
void sss(){ ff=dd; }
int ff;
}
好了,問題是,B類沒有按」不知道dd是什麼。我怎樣才能讓B班知道呢?
它是public:
而不是Public:
。
由於dd
是A
的一部分,因此您需要A
的實例才能訪問dd
。
精確的簡短答案,避免跳到關於真正含義的結論。 – aschepler 2010-11-10 21:21:44
你需要有A
一個實例,並把它傳遞給sss
方法才能訪問這些數據:
void sss(A a) { ff = a.dd; }
如果你想只有一個的dd
副本,而不是單一的副本每A
實例,那麼你就必須做出dd
靜:
class A
{
public:
static int dd;
};
class B
{
public:
void sss() { ff = A::dd; }
int ff;
};
也許通過傳遞一個A實例?
class B:
{
Public:
void sss(const A& a){ ff=a.dd; }
int ff;
}
這兩個類沒有任何關係;由於B無法訪問任何A對象,因此無法獲取其成員的值。
如果您要通過值,引用或指針將A對象傳遞給B構造函數,那麼您可以在公開它之後訪問它的dd
成員。
+1。此外,要將'** P ** ublic'更改爲'** p ** ublic' – 2010-11-10 21:14:16
你的代碼看起來不像C++,但我會盡力回答你的問題。
有幾種可能性來做你想做的事情。我只是挑一個容易理解的東西。
做些事情是這樣的:
class B
{
public:
void sss() { ff = a.dd; }
int ff;
private:
A a;
};
但是,如果你不告訴我你真正要實現與該類即其responsibilites類有這不會幫助你很多東西。
,你給出的代碼,...
class A:
{
Public:
int dd;
}
class B:
{
Public:
void sss(){ ff=dd; }
int ff;
}
...是無效的C++。
你可以很容易地發現,試圖編譯它。然後編譯器會抱怨很多不相關的東西,但是它的第一條消息將在A
之後與無關的冒號相關。當您刪除並再次編譯時,其第一條消息將與Public
相關,而不是正確的public
(小寫)。等等。
Syntacically正確的代碼(即仍然會產生一個編譯錯誤,但不是基本的語法):
class A
{
public:
int dd;
};
class B
{
public:
void sss(){ ff=dd; }
int ff;
};
想象一下,你創建A
類的五個實例,命名a1
,a2
,a3
,a4
,和a5
。每個此類實例都有一個成員dd
,因此您可以將這五個成員稱爲a1.dd
,a2.dd
,a3.dd
,a4.dd
和a5.dd
。
現在創建一個B
實例,命名爲'b'。你可以撥打b.sss()
。並且該成員函數有效地執行b.ff=dd
。或者如果它有意義並被編譯器接受的話。但是它不能爲a1.dd
,a2.dd
,a3.dd
,a4.dd
和a5.dd
中的哪一個提到?
所以,因爲這是一個非常基本的C++概念,所以你需要一個好的C++ textbook,比如Bjarne的最新版本,並且從頭開始。另外,由於C++是一種非常複雜的編程語言,因此可能會更好地從一些更簡單的語言開始,如Java,甚至更簡單,如JavaScript或Python。我推薦Python。細節上與C++有很大不同,但這兩種語言都是「傳統」編程語言。使用Python,您將瞭解決策結構和功能以及事物,包括類與實例。
乾杯&心連心,
你確定你理解類? – 2010-11-10 21:09:10
maaaaan ....... – 2010-11-10 21:12:42
就像我剛剛說過的,我要說最後一次,[得到一本書](http://stackoverflow.com/questions/388242/the-definitive-c-書籍指南和列表)並閱讀它。你不知道基本的C++,你需要。 -1從現在開始,除非你的問題是關於理解書中的東西。 – GManNickG 2010-11-10 21:13:02