[英]C++ passing object to functions
題:
您使用什么語法使同一個類的兩個對象在各自的功能中相互交互?
我在班級士兵中有兩個對象。 類函數Attack(y)獲取一個對象的current_hp int並減去另一個對象的atk int值。 我無法通過這樣的參數傳遞對象名稱。 顯然,它不起作用,並且代碼中進一步的引用也不起作用。
背景:
我一直在學習在線課程,遇到了一個挑戰,應該與我上過的課程相適應。 我做到了沒有問題,但我回去重新編寫了它,同時牢記函數和類。
我找不到任何可以幫助我的信息,所以我來到了這里。 我可能正在尋找錯誤的事物,但是...對此有所幫助,將不勝感激。
class soldier{
private:
int curent_hp = 0;
int atk = 0;
int init = 0;
public:
bool attacked_yet = false;
void create_soldier(){
curent_hp = rand() % 20 + 1;
atk = rand() % 5 + 1;
init = rand() % 100 + 1;
}
int attack(y){
// the y here being the one that is being attacked
int attackroll = rand() % 100 + 1;
if (attackroll < 30){
y.curent_hp = y.curent_hp - atk;
}
}
};
您使用什么語法使同一個類的兩個對象在各自的功能中相互交互?
從Google來看,“語法”的定義是
……單詞和短語的排列,以創建一種語言形式良好的句子。
在這種情況下,我不確定語法的含義。
作為起點,還有一些需要寫的東西,
硬件環境:
軟件環境:
硬件協同工作和保護卡以實現“快速”響應,軟件在下一秒內發現了任何操作(硬件采取的措施)。
工作/保護對ctor有影響:
a)兩張卡的構造都不假設對方的存在。
注意:如果從不安裝另一個,則系統仍將正常運行,只是沒有“恢復”行為。
大致類似於只有一名士兵存在時兩名士兵永遠不會戰斗的情況。
b)當控制器代碼准備好創建第二對(一對)時,它知道第一張工作/保護卡已准備好。 它僅構造第二個,然后將引用傳遞給有關第一個同級的最新構造。
c)收到同級引用后,兩者的第二個對象將更新兩個實例。 我通常會在第二張卡片ctor完成后立即引用第二張卡片(沒有錯誤)。
注意:在C ++中,如果提供了引用或指針,則同一對象類的兄弟實例可以完全訪問另一個對象。
我還為戰斗模擬工作做出了貢獻(電信之前)。
如果您的控制器為每個士兵提供了刺激,即調用功能,則每個士兵可以單獨進行進一步的互動。
您還可能會發現,在收到刺激后,當一個士兵實例對兩個士兵實例都執行與刺激相關的單個動作時,可能會更容易。
在一段時間前的戰斗模擬工作中,所有模擬行動都受到武器射擊(在這種情況下為激光信號)的刺激。 距離和武器類型(坦克與AR15)影響了命中時的殺傷力(由激光傳感器檢測到)。
該軟件得到了極大簡化,因為每個參與者(以及sim中的節點)既是武器又是目標。
祝您好運。
可能是最終意見:
我通常不將對象傳遞給函數。 相反,我調用對象的功能。 關於此問題的文章很多。 我可以推薦:
參見: https : //pragprog.com/articles/tell-dont-ask
另請參見: https : //martinfowler.com/bliki/TellDontAsk.html Tell-Don't-Ask是幫助人們記住面向對象的原理,即將數據與在該對象上運行的功能捆綁在一起... Martin Fowler
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.