【クラス】C++でわからんことがあるんだが教えてほしい

1 : 2022/01/11(火) 17:16:50.075 ID:XIvX6494M
デザインパターンのStateってやつを勉強してるんだけど
動的オブジェクトにして動かす方法が分からない
詳しい人教えてほしい
2 : 2022/01/11(火) 17:20:13.647 ID:XIvX6494M
親クラス
Class OYA{
int x
}

子クラス
class MUSUKO :OYA{
}

子クラスその2
class MUSUME :OYA{
}

こんなイメージ
スマホで打ってるから間違ってたらメンゴ
子クラスMUSUKO→子クラスMUSUMEに変更したいんだけど上手くいかん

3 : 2022/01/11(火) 17:20:39.390 ID:XIvX6494M
アップキャストとダウンキャストすればいいって分かったんだけどなんか上手くいかなかった
4 : 2022/01/11(火) 17:21:35.747 ID:XIvX6494M
子クラスMUSUKOから親クラスOYAにダウンキャストして
親クラスOYAから子クラスMUSUMEにアップキャストすればいいんでしょ?
これ違う?
5 : 2022/01/11(火) 17:23:34.063 ID:ESuNukR6d
ポリモーフィズム
6 : 2022/01/11(火) 17:24:06.009 ID:XIvX6494M
>>5
なにそれ?
7 : 2022/01/11(火) 17:24:46.341 ID:XIvX6494M
stateのデザインパターンを参考にしてるけどこれ上手くいかんわ
8 : 2022/01/11(火) 17:24:53.937 ID:XIvX6494M
誰か詳しい人いない?
9 : 2022/01/11(火) 17:26:04.098 ID:lmrZ/uny0
ポリモーフィズムについて調べた?
12 : 2022/01/11(火) 17:28:58.625 ID:XIvX6494M
>>9
今調べた
なるほどやりたいことに名前がついてるんだね
11 : 2022/01/11(火) 17:26:31.095 ID:ESuNukR6d
こうしたいんやろしらんけど
13 : 2022/01/11(火) 17:30:49.098 ID:XIvX6494M
>>11
そうそうすごいそれ
そこから息子→娘にしたいの
クラス中の変数の値を引き継がせてやりたいけど見つからん
14 : 2022/01/11(火) 17:31:47.224 ID:gcxD3MMC0
ポインタが分からなかったわ
16 : 2022/01/11(火) 17:34:29.345 ID:XIvX6494M
>>14
これから分かるんだよ
15 : 2022/01/11(火) 17:34:19.372 ID:XIvX6494M
親子管理クラスを作ったら

class OYAKOKAN{
public:
OYA* hensu;
OYAKOKAN(void):hensu(new MUSUKO){
}
void musumeni_change (void){
ここの中身が上手く書けない
}
}

自分が書いたのは
this->hensu =ダイナミックキャスト<*OYA>(this->hensu);
this->hensu =new MUSUME();

17 : 2022/01/11(火) 17:36:18.559 ID:XIvX6494M
生理中で頭痛いんだけど先輩社員が教えてくれないんだ
多分説明が下手だから教えられないと思ってるんかねえ
これさっさと片付けて次行きたいのに
18 : 2022/01/11(火) 17:36:43.626 ID:XIvX6494M
詳しい人いない?
頼むわ教えてくれ
19 : 2022/01/11(火) 17:37:55.253 ID:XIvX6494M
頼む
教えてほしい
20 : 2022/01/11(火) 17:39:20.793 ID:ESuNukR6d
stateってそういう使い方するものなの?
23 : 2022/01/11(火) 17:40:24.205 ID:XIvX6494M
>>20
わからんなあ
取り敢えず今やってるやつはstateを元にしてくれって言われたから
25 : 2022/01/11(火) 17:42:24.660 ID:ESuNukR6d
>>23
stateは状態遷移的な意味での状態であってその内部に状態(変数)は持つべきじゃないと思う
26 : 2022/01/11(火) 17:44:15.994 ID:XIvX6494M
>>25
そうなんか
自分も状態を遷移するときに変数引っ張ってきて引数に与える方法でええんか?ってきいたら
キャスト使ってやれって言われたからさあ
21 : 2022/01/11(火) 17:39:45.191 ID:ESuNukR6d
外でもつべきじゃない?
22 : 2022/01/11(火) 17:39:55.716 ID:ESuNukR6d
データは
24 : 2022/01/11(火) 17:41:10.202 ID:XIvX6494M
>>22
アップキャストとダウンキャスト使えば出来るって言ってた
なお方法は教えらんないとか
27 : 2022/01/11(火) 17:44:36.679 ID:chMMJLXaF
>>24
それだったらstateパターンなんて高級なもの使わなくてもif分岐でいいじゃん
28 : 2022/01/11(火) 17:46:30.173 ID:XIvX6494M
>>27
どうやるん?
教えてくれ
30 : 2022/01/11(火) 17:49:34.509 ID:ESuNukR6d
のがStateパターンのやろうとしてることだと思う
31 : 2022/01/11(火) 17:50:52.370 ID:XIvX6494M
>>30
うん
そうだよね
調べる感じ切り替えるときもthis->オブジェクトを消してから別のを引っ張ってきてる

でもそれじゃ内部の変数引き継げないからなあ

33 : 2022/01/11(火) 17:53:21.527 ID:ESuNukR6d
>>31
たぶんStateパターンを適用するところが間違ってる気がする
32 : 2022/01/11(火) 17:51:27.349 ID:ESuNukR6d
Data d = Data(1, 2, new Add());
d.state.doOp(); // = 3

d.state = new Mul();
d.state.doOp(); // = 2

コメント

タイトルとURLをコピーしました