[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 06/17 22:51 / Filesize : 282 KB / Number-of Response : 1031
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part135



1 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 20:20:06.25 ID:o3PNwIlC0.net]
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part134
mevius.5ch.net/test/read.cgi/tech/1516406742/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
mevius.5ch.net/test/read.cgi/tech/1509780815/

■長いソースを貼るときはここへ。■
 codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

72 名前:片山博文MZ mailto:sage [2018/04/06(金) 21:29:52.65 ID:eB6IhESGd.net]
ゲーム製作板か、CG板の方がいいかもしれない。

73 名前:名無し@キムチ [2018/04/06(金) 21:32:34.54 ID:VpnYoE0I0.net]
>>68
まだ正式なリファレンスはいろいろ暇がなくて読んでない。
日本語で簡単に解説してあるウェブサイトは見たけど、
取得したFBXファイルのいろんな情報を文字列で表示するプログラムが載ってるだけで、
実際にその3Dオブジェクトを画面に表示する方法が載ってない。日本語のサイトで解説してあるのは、どうもここまでみたいなので、
やはり英語の正式なリファレンスを見ないとダメかな?www

74 名前:片山博文MZ mailto:sage [2018/04/06(金) 21:35:02.97 ID:eB6IhESGd.net]
ゲーム製作板に、くわしく知ってる人が居るかも知れない。

75 名前:片山博文MZ mailto:sage [2018/04/06(金) 21:39:40.26 ID:eB6IhESGd.net]
業界へ出るなら、英語アレルギーは克服すべし。自動翻訳が使えれば、詠めるかもしれない。蘭学から学べることは多い。

76 名前:名無し@キムチ [2018/04/06(金) 21:40:42.10 ID:VpnYoE0I0.net]
>>70
>ゲーム製作板か、CG板の方がいいかもしれない。
いやゲームはもう作りたくないし、CGも特に興味ない。
実はMakeHumanみたいな3Dキャラ作成ツールがつくりたくてね。
まだ始めたばかりで、そこまでの距離は100億光年ばかりあるけど・・・
これってやっぱりちゃんとしたプログラム技術板向きの話題だよね?

77 名前:片山博文MZ mailto:sage [2018/04/06(金) 21:42:51.27 ID:eB6IhESGd.net]
器の小さい人には教えないよ。時間のムダだからね。

78 名前:片山博文MZ mailto:sage [2018/04/06(金) 21:48:02.69 ID:eB6IhESGd.net]
ゼロから3D作りたいなら、DirectX, OpenGL, Valkanあたりを勉強することになる。
しかし、ゲームエンジンがなければ、動く3Dは手間がかかる。

79 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 21:49:10.94 ID:RWHjeoGDa.net]
>>65
ありがとうございます!

80 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 21:50:43.17 ID:RWHjeoGDa.net]
>>76
DirectX便利ですよね
魚眼を再現しようとして挫折しましたが...



81 名前:片山博文MZ mailto:sage [2018/04/06(金) 21:51:55.72 ID:eB6IhESGd.net]
iPhoneXでリアルタイムでVtuber作れる時代に素人が3Dモデラー作るのは、技術のムダだろう。

82 名前:片山博文MZ mailto:sage [2018/04/06(金) 21:56:32.87 ID:eB6IhESGd.net]
数学のベクトル、射影、非ユークリッド幾何学が理解できるくらいの数学力がないと魚眼レンズはムリだろう。ムリムリ。

83 名前:片山博文MZ mailto:sage [2018/04/06(金) 22:00:38.96 ID:eB6IhESGd.net]
物理学的に考えると、魚眼は屈折率の差から発生する現象だから、モデラーの物体に屈折率を設定するだけでいい。

84 名前:片山博文MZ mailto:sage [2018/04/06(金) 22:05:13.65 ID:eB6IhESGd.net]
カメラの特性で、レンズの広角が設定できればそれに越したことはないが。

85 名前:片山博文MZ mailto:sage [2018/04/06(金) 22:10:52.66 ID:eB6IhESGd.net]
「広角 DirectX」で検索。
https://msdn.microsoft.com/ja-jp/magazine/dn745869.aspx

86 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 22:14:45.90 ID:Qe7eZ8vzM.net]
>>80
エピポール幾何はいるでしょうねぇ
AR/MR/VRするなら

87 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 22:23:28.39 ID:RWHjeoGDa.net]
>>83
度重なるありがとうございます。
勉強します。とりあえず処理重そうです(・・;)

88 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 22:30:22.55 ID:gYiRH0WM0.net]
ゲーム作ろうと思っても大体はゲームエンジン作り始めて途中で飽きてやめる

89 名前:片山博文MZ mailto:sage [2018/04/06(金) 22:30:40.49 ID:eB6IhESGd.net]
CGもオブジェクト指向になっているから、撮影スタジオで実際に物体やカメラの位置を決めるのと同じように、シーンを構築すれば、それが映像になる。

90 名前:片山博文MZ mailto:sage [2018/04/06(金) 22:57:17.05 ID:eB6IhESGd.net]
ニュースセンターで使われるような、再現CGを自由に作れるようになったら、引っ張りダコだよ。



91 名前:片山博文MZ mailto:sage [2018/04/06(金) 23:06:06.99 ID:eB6IhESGd.net]
そうなったら、映像クリエイターになって仕事を請け負って独立できるぞ。プログラマーよりも働き甲斐があるかもしれん。

92 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 23:07:50.12 ID:gYiRH0WM0.net]
どっちも薄給

93 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 00:36:31.30 ID:Y5tUUVb30.net]
やたら伸びてると思ったら1人あたりのレス数多すぎだろ(しかも知らんことに口出し過ぎ

fbxsdkは昔ちょっとしか触ってないが、多分そのVSの3Dシーン作成ってのは3Dのモデルやシーンを.fbxに書き出すプロジェクトじゃね?
そういうのは多分Maya使った方が早いしfbxsdkはどっちにしても要る
あとDirect3D使うならそっちのスレ行ってくれ

94 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 02:00:13.10 ID:xND6FkKma.net]
C++で用意されているキャストと
cのi=(int)j みたいなキャストの違いがよくわからない

95 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 02:09:06.48 ID:+gqqNGFK0.net]
static_cast … 無理のない互換性のある変換。
reinterpret_cast … int から void* 等への強制変換 c の ()キャストと同じ。
const_cast … const 付きから const を無くしたりまたはその逆の変換。
dynamic_cast … 実行時型情報を使って実行時に型情報で互換性を見比べながらの変換。実行時型情報とのリンクが必須。

96 名前:はちみつ餃子 mailto:sage [2018/04/08(日) 03:14:37.94 ID:RvzgDq0H0.net]
>>92
C スタイルのキャストは dynamic_cast 以外の C++ スタイルキャストを兼ね備えている。
安全なキャストも危険なキャストも見た目にわかんないから、
うっかり危険なキャストをしないようにカテゴリ分けしたやつを使った方がいいなって話。

reinterpret_cast や const_cast がどうしても必要な状況になったら、
それはそのプログラムが悪いデザインだというサインだ。
(デバイスドライバとか OS とかの低水準プログラムだと仕方なく使う機会は多いかもしれないけど)

97 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 06:15:21.60 ID:fQMOYFpe0.net]
『プログラミング言語C++』第4版のどこだったかに、
「危険なキャストを行っているソース箇所が目立つように
reinterpret_cast<型> のような長い綴りで見た目もスマートでない
キーワードを選んで導入した」みたいなことが書いてあったな。

98 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 11:13:04.50 ID:NQAA1W7E0.net]
すいませんchar str[1000]に格納されてるこの文字列を、str2[0][]=64 str2[1][]=9 という感じで上手くデータだけ取り出す方法は無いでしょうか

i.imgur.com/MMYajmf.jpg

99 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 11:13:28.36 ID:CEYO7YYHa.net]
ありがとうございます
基本的には見た目の話なんですね

100 名前:デフォルトの名無しさん [2018/04/08(日) 11:44:19.45 ID:rArjzNgz0.net]
C形式のキャストは絶対に使うなって事だよ



101 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 11:44:37.07 ID:ySnMa92f0.net]
>>96
cならsscanfかね
c++ならregexを使うか
そもそもc/c++でやりたい範囲ではないが

102 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 11:44:50.16 ID:wX43tNlZ0.net]
>>96
テキストなのなら、一行ずつ読んで、=で半分にしましょう。
んで、""の中の空白以外を全部取り去って、std::mapにでも突っ込みましょう。

103 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 12:07:31.24 ID:NQAA1W7E0.net]
>>99>>100
めっちゃ難しそうな回答きた・・
ちょっと調べて頑張ってみますありがとうございます

104 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 12:17:01.56 .net]
danger_cast は言い過ぎとして、unsafe_cast くらいにして欲しかった

105 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 12:19:03.34 .net]
hansode_tampan_cast

106 名前:デフォルトの名無しさん [2018/04/08(日) 12:34:24.71 .net]
>>96
・str2はポインタの配列、idxはstr2の添字とする
・1文字ずつループして以下を処理
 「=」が現れるまでまで読み飛ばす
 「 」「"」以外の文字が現れたらstr2[idx++]にその文字へのポインタ格納
・「;」までスキップして¥0に置き換え

107 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 12:36:55.36 ID:NQAA1W7E0.net]
>>104
なんかできそう!やってみますありがとうございます!

108 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 13:00:09.46 ID:CRecF1KTd.net]
reinterpret_cast をポインタ以外に使うのはない

109 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 13:13:04.30 ID:IdsKnaEwM.net]
c向けのライブラリをc++で開発するときは躊躇なく使うかな>reinterpret_cast
あとはargとかparamとかいう名前の引数に好きなデータを突っ込みたいときとか。

110 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 13:57:50.07 .net]
reinterpret_castはゼロオーバーヘッド?



111 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 13:59:32.17 ID:wX43tNlZ0.net]
コンパイラさんが解釈かえるだけだから。新しくなにも確保しない。

112 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:55:18.41 ID:XIh7sWbQ0.net]
バイト単位の処理をするときに必ず出てくるだろ

113 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 15:41:01.45 ID:drN9+cfC0.net]
>>107の「あとは」以下の用例多いよね。
スレッドのエントリポイントの引数だの libcurl のコールバックの引数だのそんなので

114 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 17:17:06.93 ID:9PMBUXuM0.net]
バリアント型が無いために野蛮なキャストが生きながらえるんじゃ
さっさとリフレクションとプロパティーとバリアント型を規格に盛り込みなさい

115 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 17:26:02.77 ID:XIh7sWbQ0.net]
>バリアント型が無いために野蛮なキャストが生きながらえるんじゃ
誰も殺そうとしていない

116 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 17:48:08.38 ID:yoJPjKyN0.net]
Windowsとかのメッセージのパラメータなんて、
キャストしないとなにもできないけどな

117 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 20:53:29.38 ID:B7amW+qmM.net]
>>112
> さっさとリフレクションとプロパティーとバリアント型を規格に盛り込みなさい
C+++でも作って勝手にやっててくれ

118 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 21:04:08.52 ID:aevyI+Fp0.net]
C++++でしょ
ill-formedだけど
それでこそアホどもに相応しい

119 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 11:03:03.24 ID:Ecf+pvidM.net]
static_castは長いから、ただのcastにしてほしい
その方がreinterpret_castのunsafe感が高まる

120 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 11:19:04.00 ID:ClY8G0uJa.net]
デフォルトをstatic_castで解釈しないのはなぜ?



121 名前:はちみつ餃子 mailto:sage [2018/04/09(月) 11:23:19.28 ID:fbTUuQs/0.net]
>>117
#define cast static_cast

122 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 15:59:42.60 ID:AbJVhraD0.net]
>>118
互換性

123 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 22:38:54.59 ID:J7f8Y+mC0.net]
>>118
互換性には2種類ある
クラスポインタ変換の場合を例に挙げると
一つは拡張クラスからベースクラスへのアップキャスト
こちらはキャストの明示は必要ない暗黙の型変換が行える
もう一つはベースクラスから拡張クラスへのダウンキャスト
こちらはベースから拡張クラスへの変換に確証が得られている
わけではないのでstatic_castを用いて変換してやらないといけない
このときdynamic_castを使うと実行時に型をチェックしてくれる
のでよりstrictな変換を行わせることができる
できるといってもエラーを発生させるかさせないかの違いだけだけど

124 名前:デフォルトの名無しさん mailto:sage [2018/04/10(火) 00:58:36.89 ID:KTsfJjko0.net]
>>118
そら互換性のためでしょ

125 名前:デフォルトの名無しさん mailto:sage [2018/04/10(火) 05:22:39.46 ID:AY1cx8Cu0.net]
>>121
それは互換性じゃなくC++独自の話だね
互換性というからには何と互換なのかという相手がいる

ちなみに、かつて暗黙dynamic_castが提案されて否決となった

126 名前:デフォルトの名無しさん mailto:sage [2018/04/10(火) 09:48:42.17 ID:PdcJoG7U0.net]
コンソールプログラムのwhile()ループで1文字入力したらループを抜けるときに使うやつって何でしたっけ・・
while(!getchar())だと文字を受けるまで処理がとまってしまいますが、止まらないやつがあったと思うのですが

127 名前:デフォルトの名無しさん mailto:sage [2018/04/10(火) 10:20:00.71 ID:AY1cx8Cu0.net]
標準に「止まらないキースキャン」はない
conio.hのgetch()や
ioctl.hのioctl()あるいは
windows.hのGetKeyState()のような
処理系依存の関数が必要

128 名前:デフォルトの名無しさん mailto:sage [2018/04/10(火) 10:30:44.25 ID:h0HOed+p0.net]
linuxならファイルディスクリプタにselectが使えるけど
windowsの場合はファイルディスクリプタとソケットがまた別物だし

129 名前:デフォルトの名無しさん mailto:sage [2018/04/10(火) 11:04:35.34 ID:PdcJoG7U0.net]
>>125
getch()絡みで調べてたらkbhit()って出てきましたこれです
ありがとうございました
ちゃんと任意のキー押したら抜けれました

130 名前:はちみつ餃子 mailto:sage [2018/04/10(火) 11:10:44.06 ID:141aKXKv0.net]
それって結局はビジーループの一種じゃね?
やりたいことにもよるけど、基本的にはあんまりよくない方法だと思う。



131 名前:デフォルトの名無しさん mailto:sage [2018/04/11(水) 08:10:31.14 ID:T4s6uHOl0.net]
>>128
まずいですかね?
一日ランニング試験してみたんですが良い感じに動いてるのですが・・

132 名前:デフォルトの名無しさん mailto:sage [2018/04/11(水) 09:27:42.36 ID:WgIjYyd40.net]
ビジーループにSleep挿入して100msづつ位休む感じでアイドルに見せ掛けるハッタリを噛ます

133 名前:デフォルトの名無しさん mailto:sage [2018/04/11(水) 12:28:20.43 ID:nyTWTQlG0.net]
はったりじゃないでしょ
それは合格

134 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 12:01:39.22 ID:bHi1VZVu0.net]
低優先度タスクからのプリエンプションが無いOSでSleep(100 ms)したら
優先度関係無く他タスクに100 msを超えて待たされてしまうかもしれない
Sleep()は実行権放棄の呪文としては強力すぐる…

135 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 13:25:03.37 ID:RVvtBgPf0.net]
DOS並にコンソールがクソな環境も珍しいよな
unixベースのシェルに比べるとこんな貧相なものがよく生き残ってこれたとおもふ

136 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 14:27:12.94 ID:AqyGMwU/0.net]
>>132
ウィンドウズの話だけど、threadヘッダのスリープは起こし忘れが少ない気がする。

137 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 22:00:06.17 ID:7AzbU2hj0.net]
未だにGUIがまともにならないLinuxも珍しいよな

138 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 22:16:23.39 ID:B3QB9Fpb0.net]
>>135
君に期待しても良いのかな?

139 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 22:26:38.67 ID:jn5/AQ8F0.net]
誰かがデザイナ雇わないとな

140 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 22:31:21.78 ID:Tt8LTURP0.net]
まともを定義せよ



141 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 22:47:45.04 ID:jn5/AQ8F0.net]
美しいGUIか使用上十分なGUIか

142 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 23:04:06.39 ID:WAEnZz2X0.net]
C

143 名前:lass A
{


  void A(B* &b)
  {
  }
};
[]
[ここ壊れてます]

144 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 23:06:11.46 ID:B3QB9Fpb0.net]
毎日使う上では美しさはいらない。シンプルで頼む

145 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 23:08:51.81 ID:WAEnZz2X0.net]
済みません、途中送信してしまいました・・・

Class A
{
  B* _b;

  void A(B* &b)
  {
    _b = b;
    _b = new B();
  }
};

B* b;
A* a = new A(b);
b←newされてない・・・

クラスAのコンストラクタでクラスBのインスタンスを受け取り
newで新たなインスタンスを作成したうえで返そうと思います。
しかし上記のようなプログラムを作成してもインスタンスbは
newされてませんでした。

どうしたらbをnewしたうえで返すことができるようになるでしょうか?

146 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 23:15:39.02 ID:EkNosKh20.net]
void A(B** b)
{
*b = new B();
}
でいいんでないの

147 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 23:23:21.44 ID:9kNArSDya.net]
馬鹿だから分からないんだが教えて
インスタンス渡してからnewするのはなぜ?
ポインタを参照にする意味とは?

148 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 00:33:02.73 ID:/OvgYAab0.net]
>>142
>  void A(B* &b)
>  {
>    _b = b;
>    _b = new B();
>  }

下の方は b = new B(); としたかったんじゃないのか

149 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 00:44:36.47 ID:b/ktaKN+0.net]
A(B*&b) {
b=new B();
_b=b;
}
頭悪いだろオマエラw

150 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 00:52:36.30 ID:b/ktaKN+0.net]
A(B*&b){_b=b=new B();}
もしくは一発で書けば何の問題もおこらんよ



151 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 00:57:54.63 ID:/OvgYAab0.net]
受け取ったインスタンスを全く使ってないがそれが意図した動作なのか

152 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 01:00:18.78 ID:b/ktaKN+0.net]
参照オブジェクトの概念がよくわかってない
学び直せと言いたい

153 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 01:04:57.02 ID:VAOccv/70.net]
>>148
インスタンスなんて受け取ってないぞ

154 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 01:09:03.26 ID:/OvgYAab0.net]
>>150
>>142で「インスタンスを受け取り」と書いてあるから
ポインタ(の参照)でだけどインスタンスを渡しているのだろう
何故受け取っているのかとかの説明は無理だが

155 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 01:19:33.61 ID:b/ktaKN+0.net]
それにしてもbをnewするとかイミフ
何もしてないじゃんw

156 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 01:22:46.36 ID:b/ktaKN+0.net]
古いインスタンスを_bに格納して新しいインスタンスをbに返したいのか
新しいインスタンスを作成してbと_b両方に返したいのか
どっちなんだよ

157 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 01:22:49.52 ID:/OvgYAab0.net]
>>152
b を new するってのは
>b = new B();
のことか?参照で返してるんだよ

何故返す必要があるのかはこれも答えられないが
>>142に new して返そうと思っていますとあるからな

158 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 01:30:17.78 ID:b/ktaKN+0.net]
_b=new B() は見当たるが
b=new B() ←こんな記述は見当たらないぞ
嘘もたいがいにしとけや

159 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 01:39:29.12 ID:b/ktaKN+0.net]
>>142
コイツのソース見る限りbに対しては何もしてないでしょ

160 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 03:35:09.27 ID:mYZtkoVNd.net]
すまんすまん

>>142
>B* b;
>A* a = new A(b);

を見落としていた
インスタンスを渡すといっておいてインスタンスを渡していないとは思いもしなかったw
>>147であってるんだろうね



161 名前:デフォルトの名無しさん [2018/04/15(日) 06:03:36.65 .net]
>>142
>  void A(B* &b)
>  {
>    _b = b;
>    _b = new B();
>  }

  void A(B* &b)
  {
    B* new_b = new B();
    b = new_b;
    _b = new_b;
  }

こういうのは愚直に書けばええんや

162 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 08:25:34.99 ID:IUBKEb9a0.net]
AのコンストラクタにBへのポインタのポインタだか参照だかを渡さなくても
Bへのポインタと関係ないAのコンストラクタ、と
A内部のBメンバへのポインタを返すゲッタ、との
組み合わせにする方が素直でねぇか?

class A
{
  B* _b;

public:
  A() {_b = new B();}
  B* ptr_b() const {return _b;}
};

int main(void)
{
  A* a = new A();
  B* b = a->ptr_b();

  return 0;
}


別に確保した「Bを格納すべき領域へのポインタ」を受け取って、
Aの初期化時にBの配置newを行わせたい、という意図かもしれないけど、
元の質問から想像を広げすぎてるよね。

163 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 10:01:16.50 ID:6WpjLuna0.net]
Aが_bをdeleteするために管理するだけのクラスだとしたらスマポ使えという話になる

164 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 10:57:43.04 ID:Yi/sDJN50.net]
前に書き込んだことあるけど
https://qiita.com/notenopg/items/40571e69986a58b888a0
どうじゃ

165 名前:142 mailto:sage [2018/04/15(日) 11:01:19.87 ID:GeT3puOg0.net]
舌足らずでもうしわけありませんでした・・・

クラスBのインスタンスをクラスAで処理していくためにコンストラクタでクラスBの
インスタンスを参照受け取りする仕様にしました。

大半のケースではそのまま処理して終わり、なのですが
まれに受け取ったクラスBのインスタンスをnewし直す必要がありまして
その際受け取ったクラスAのメンバ変数 _b をnewしても受け取り元のインスタンスを
newできないことに悩んでいました

ただオブジェクト指向の観点から見るとあまり美しいプログラミングスタイルでは無いのかもしれませんね。
クラスBのインスタンスはクラスA内部で完全隔離処理するようにした方がいいのかもしれません

166 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 11:19:51.96 ID:6WpjLuna0.net]
BをAしか使わないならAの中に隔離する
他でも使う必要があって、Aの外部でBの寿命を管理してるなら、AにrefreshB()みたいなBをnewし直した時に渡し直す関数を用意する
でいいんじゃないの
本当にBをnewし直す(メモリ上再配置する)必要があるならだけど

実はB自体にreset()用意するだけで済む話のように見える

167 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 12:55:30.01 ID:eVQUY7wra.net]
c++じゃポインタのこともインスタンスっていうのか

168 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 14:39:37.81 ID:rsq+XQj0M.net]
>>164
2レス前も読めないのか

169 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 18:30:19.93 ID:51qZxk5sa.net]
理解不足を言い換えてミスしてない風にするのが流行ってるのかな

170 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 22:24:39.46 ID:vR7s+ZvT0.net]
ミスって理解不足からくるじゃん



171 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 23:39:26.36 ID:Mp1WrgTGa.net]
質問あるのですが、
同一PC内の画面機能と処理機能のプロセス間通信はどうやるのが便利ですか?
画面更新速度は100ms周期くらいです。

共有メモリがいいと思ったんですが、ソケット推してる人がいてもやもや
アクセス速度とかNICの通信量とか考えると共有メモリ一択な気がするんですが、どうなんでしょうか?

パイプとマップドメモリはメリット無いので考えていません。

172 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 23:42:01.12 ID:sXJBpbWg0.net]
何を重視するか次第






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<282KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef