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


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

C++相談室 part119



1 名前:デフォルトの名無しさん [2015/08/31(月) 18:19:04.13 ID:NE3NvROE.net]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part118
peace.2ch.net/test/read.cgi/tech/1435970316/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©2ch.net
peace.2ch.net/test/read.cgi/tech/1439849418/

次期規格C++1zはこちら
C++14/C++1z 20
peace.2ch.net/test/read.cgi/tech/1410382924/

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

75 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 21:52:05.05 ID:m/gpmXab.net]
なんでもいいが、俺なら

template <class Type>
class A {
private:
  Type _a;

public:
  A() : _a() {}
};

と書く
Typeのコンストラクタを呼ぶというより、_aをデフォルトコンストラクタで初期化しといたやでという意味で書いてるから。
>>72の書き方だとコピーコンストラクタを呼ぶことになるのでは?

76 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 22:18:06.66 ID:HOyUHIr6.net]
>>70
どうしてそう息を吸って吐くようにウソが出てくるんだ?

77 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 22:47:41.96 ID:1DlJs2CJ.net]
>>73
コンストラクタを呼んじゃいけないという
おまえの脳内前提で質問されても

78 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 23:14:30.27 ID:ygSRnlxE.net]
>>74
具体的にどうぞ
どう言えば正しいのかまで
それが出来ないならお前はクズの中のクズ

79 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 23:19:25.72 ID:HOyUHIr6.net]
>>76
規格の定義と異なる嘘を並べておいて随分と横柄な態度だな
仕様を読み間違えたとかじゃなくて知らないくせにテキトー抜かすのは
止めた方がいいぞ

80 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 23:20:58.11 ID:ygSRnlxE.net]
>>77
で?

81 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 23:34:08.05 ID:0+j6o+Dn.net]
>>78
レス止めたほうがいいってよ(´・ω・`)

82 名前:デフォルトの名無しさん [2015/09/02(水) 23:42:02.07 ID:urmqHodw.net]
大きく出る割に話がピーマン

83 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 00:34:33.32 ID:iQnjIkb4.net]
具体的には説明できないがお前は



84 名前:間違っている!!! []
[ここ壊れてます]

85 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 00:42:05.98 ID:CZJfW2V/.net]
>>73
>>72だとxvalueでムーブコンストラクタが呼ばれるのでは?……と思ったけど、必ずしもムーブコンストラクタが定義されてるわけではない上に、デストラクタ明示したらムーブセマンティクスも明示しないと削除されるか(推奨であって規格ではない)

86 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 00:45:59.94 ID:SvUuACZU.net]
荒れてるところ恐縮ですが質問してもいいですか?
class A {
B& b;
}
class B {
A& a;
}
こんなふうな相互に参照を持つことってできるのですか?
ポインタ使う以外に道はないですか?

87 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 00:50:37.56 ID:fKKhgssi.net]
指摘した後に勘違いと気づいたパターン

88 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 01:12:32.53 ID:hDY8eKzg.net]
>>83
class c
{
 class b;
 class a
 {
  b &b_ = *new b();
 };

 class b
 {
  a &a_ = *new a();
 };
};

これで一応動くけど、どうすんのこれ

89 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 01:16:38.14 ID:fKKhgssi.net]
それ相互参照じゃない
というかムリ

90 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 02:36:12.57 ID:VxVmaHFN.net]
仮引数をstd::stringへのconst参照にしてconst char*の文字列("...")を渡す動作はC++標準ですか?

91 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 03:11:20.88 ID:CZJfW2V/.net]
標準。
プログラミング言語C++第4版の関数多重定義解決規則をみよ。
適合できない引数を暗黙変換できるならする。
そのさいに引数を1つとるコンストラクタにも入れ子式に適用される。

92 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 03:20:02.37 ID:fKKhgssi.net]
暗黙変換はされるのは1回だけだよ

93 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 04:07:13.75 ID:SvUuACZU.net]
>>85
そんな手がありましたか
でもdeleteは自分でしなきゃダメですよね

>>86
やはり、参照を使うのは無理ですよね
「相互参照」でググってもポインタを使う例ばかりですし

ありがとうです



94 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 05:34:06.26 ID:D704J011.net]
>>83
ほれ
ideone.com/9VuNcJ

95 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 07:13:38.72 ID:1aBHaasU.net]
プログラミング言語C++第4版というのはISO/IEC 14882:2014のことですか?

96 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 08:22:08.15 ID:ZCmiwbzV.net]
あれやこれや言われてる>>72の正しい解答教えてくれんと僕眠れない

97 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 09:36:59.35 ID:SPzlieDS.net]
組み込みでc++を使用しているのですが、
C++の標準ライブラリのcoutや、vectorを使用したいと思っています。
そのためには何らかのドライバの役割を果たすソースが必要ではないかと考えています。
どのようにすれば使用できるようになるのでしょうか。

98 名前:デフォルトの名無しさん [2015/09/03(木) 09:56:07.26 ID:gfhZ4+hm.net]
動作するSTLソース

99 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 10:17:18.79 ID:PXwT0hDa.net]
ソース一覧

www.bulldog.co.jp/ ブルドックソース株式会社 東京都
www.kagome.co.jp/ カゴメ株式会社 愛知県
www.otafuku.co.jp/ オタフクソース株式会社 広島県
www.ikari-s.co.jp/ イカリソース株式会社 大阪府
www.kikkoman.co.jp/ キッコーマン株式会社 千葉県
www.oliversauce.com/オリバーソース株式会社 兵庫県
www.sky-net.or.jp/toshi/ カープソース 広島県
www.maruki-su.com/ 株式会社 川上酢店 愛知県
www.kozima.co.jp/ 小島食品製造株式会社 愛知県
www.komi.co.jp/ コーミ株式会社 愛知県
www.sankyohikari.co.jp/ サンキョーヒカリ 愛知県
www.junmaru.co.jp/ 株式会社 純正食品マルシマ 広島県
www.papaya-sauce.co.jp/ パパヤソース本舗 大洋産業株式会社 京都府
www.takahashisauce.com/ 高橋ソース株式会社 埼玉県
www.choko.co.jp/ チョーコー醤油株式会社 長崎県
www.timelyhit.ne.jp/ajiyoko/shop/sauce/sauce1.htm 阪神ソース株式会社 兵庫県
www.kyoto-thinking.co.jp/hirota/ 京風味ソース本舗 蛇ノ目食品廣田徳七商店 京都
www.optic.or.jp/com/fujiisauce/fujiisauce.html 有限会社 藤井ソース工場 岡山県
www2.neweb.ne.jp/wd/hikari/ ヒカリ食品 徳島県
www.hat.hi-ho.ne.jp/aokia/ 下北沢ビレッジソース 丸寿食品工業株式会社 東京都
www.yamayashokuhin.co.jp/ 山屋食品株式会社 東京都
brothersauce.com/ ブラザーソース森彌食品工業株式会社
www.asahi.co.jp/you/t20011026.html 神戸地ソース物語
【関連団体】
www.maff.go.jp/koueki/sougou/35/35.htm (社)日本ソース工業会
www.japan-tomato.or.jp/ 社団法人 全国トマト工業会
www.soysauce.or.jp/ 日本醤油協会

100 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 10:35:36.61 ID:Zp2ZXSAW.net]
>>94
とりあえず試してみて、そのまま使えなようなら、コンパイラのマニュアルを読む。

101 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 10:57:30.22 ID:3MKID8ns.net]
>>97
__dso_handleがどうのこうのでエラーが出ます
コンパイラはg++です。
マニュアルのインデックスをざっと見てみたのですが
セクションが多すぎて該当部分がわかりませんでした

102 名前:デフォルトの名無しさん [2015/09/03(木) 11:17:42.50 ID:qqXcw9HH.net]
組み込みでcoutなんかいるのか?
coutがすぐ使えないってことはベアメタルだよな

103 名前:デフォルトの名無しさん [2015/09/03(木) 11:22:18.14 ID:BYrhbrh5.net]
いるかどうかは問題にしてない



104 名前:デフォルトの名無しさん [2015/09/03(木) 11:23:37.79 ID:SPzlieDS.net]
>>99
OSでnewlibのサポートはあるのですが
C++ライブラリのサポートがないようなので何とかして使えるようにならないかと
coutは簡単にデバッグ用メッセージをコンソールに出力できたらいいなと
newlibではprintfが使用できます。

105 名前:デフォルトの名無しさん [2015/09/03(木) 11:33:23.42 ID:gfhZ4+hm.net]
標準ライブラリとSTLは別物。
どちらもビルド済みがコンパイラと同包されてるケースが多いが。
無ければ自らビルドするなりして組み込まないと動作するわけない。

106 名前:デフォルトの名無しさん [2015/09/03(木) 11:44:20.68 ID:gfhZ4+hm.net]
newlib STLでググった結果。
AVR 8ビットマイクロコントローラでSTLを動かす話かと。



AVR toolchain with GCC 4.8.1 and C++ STL support - Antoni Buszta

Building compiler
Building C Standard Library
Patch GCC sources
Building C++ Standard Library and other tools
antoni.buszta.info/2013/07/18/avr-toolchain-with-gcc-4-8-1-and-c-stl-support/

107 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 12:03:05.07 ID:UXgFNAqG.net]
最近は、8bitマイコンでも、C++が動くのか?

びっくりした

108 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 12:09:28.35 ID:SvUuACZU.net]
>>91
ありがとうございます
unionで何らかのポインタ(void*でなくてもよさげ?)をnull初期化してやれば、
参照(をメンバに持つクラス)をメンバに持つ場合でもいけるわけですね

配置newでthisを渡すというのも初めて知りました
自分にはちょっと技巧的すぎるやり方ですが、とても勉強になりました

109 名前:デフォルトの名無しさん [2015/09/03(木) 12:16:39.79 ID:gfhZ4+hm.net]
軽量なコード、システムを選択していけばいけるんじゃないの?やったことはない。

uClibc stl でググった結果。

uClibc++ C++ library
cxx.uclibc.org/status.html

Small scale C++ STL for embedded use
www.exactcode.com/site/open_source/embeddedstl/

Embedded C++ - Wikipedia
1990年代後半、組み込み用途への適用を目指して、肥大化したC++の仕様を必要最低限のものに絞り込んだサブセットが考案された。
一般的には、Embedded C++を用いた場合、C++よりプログラムをコンパクトにできる傾向がある。

110 名前:デフォルトの名無しさん [2015/09/03(木) 12:43:32.79 ID:SPzlieDS.net]
>>102
なるほど、iostreamは標準ライブラリでvectorはSTLになるのですね
ちなみに組み込み用(ARM)用のstdlibc++.aは存在します
その中で"objdump -C -t"してあげるとcoutのシンボルは存在しますがvectorなどは確かに見つかりませんね
>>103
どこでcoutの出力先やらメモリの動的確保の方法を指定しているのかがわからないですね
>>106
こんなのがあるんですね

111 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 12:56:42.10 ID:hDY8eKzg.net]
8-bitマイコンってメモリ空間256バイトではないよね
なにをもって8-bitなの?

112 名前:デフォルトの名無しさん [2015/09/03(木) 13:20:30.95 ID:gfhZ4+hm.net]
STLといっても最終的にはCPUの基本命令まで翻訳されるわけで。
STLの実装・翻訳の過程で無駄がないとすると、STLを使わないものと遜色はないはず。
メモリや速度で難があるのは無駄があるだけ。

113 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 14:47:23.71 ID:UXgFNAqG.net]
>>107
coutは標準出力。
ファイル・ディスクリプタ、0:標準入力(stdin)、
1:標準出力(stdout)、2:標準エラー(stderr)

メモリの動的確保は、reallocか、
free + malloc

>>108
CPUの命令長が、8bit



114 名前:デフォルトの名無しさん [2015/09/03(木) 16:50:12.14 ID:rBNlqiiW.net]
>>110
確かにそれは上位のレイヤーではそうなのですが
下位層を意識してみると
内部のコードを読んだことないので自分の中での理解なのですが
Linuxの場合
例えばprintfは文字列を処理してから
fd:1を引数としたwriteシステムコールで
文字列を出力しているなどしてるのかと思っています。
しかし、windowsでは別の文字列出力方法があると思います。
その環境ごとの文字列出力法の差異をどこで吸収するのか気になっています。
Newlibはおそらくwrite_r等と言う関数を定義することで環境の差異を吸収しているように見えました。

115 名前:デフォルトの名無しさん [2015/09/03(木) 18:06:39.67 ID:zWhDxOK5.net]
std::tuple< std::tuple<std::tuple.... *,int>> *, int >
自分自身のポインターを要素に持つtupleって出来ないんですか?

116 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 18:23:10.49 ID:hPxxKfzL.net]
>>93
「Type()」はデフォルト初期化でなく値初期化
値初期化の過程でゼロ初期化されるかどうかはルールが複雑なので
ISO/IEC 14882:2014の8.5を読めとしか言えない
ただPODかどうかは関係ない
例えば
struct X {int a; protected: int b;};
はPODではないけれどゼロ初期化される

117 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 18:51:40.41 ID:XvCyn3hF.net]
JAVAといっても最終的にはCPUの基本命令まで翻訳されるわけで。
JAVAの実装・翻訳の過程で無駄がないとすると、JAVAを使わないものと遜色はないはず。
メモリや速度で難があるのは無駄があるだけ。

118 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 19:17:25.38 ID:G+oloE/W.net]
>>112
template<typename T> class hoge{};
hoge<hoge<int>*> n_inst;

??????

119 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/09/03(木) 19:21:44.93 ID:un01NHO0.net]
合わせ鏡みたいなタプル?
できるわけないだろ

120 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 19:27:06.77 ID:G+oloE/W.net]
template<typename T, typename U> class hoge{};
hoge<hoge<int, int>*, int> tu_inst;

意味が分からん。それとも

template<typename T> class hoge{
public:
 T* m_p;
};
hoge<int> n_inst;
n_inst.m_p;//int*型
普通にこうしたいだけ?

121 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 19:29:10.11 ID:G+oloE/W.net]
ていうか、論理が分からないのか、循環参照したがるんだよな
循環参照は不定なだけ

122 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 20:34:41.66 ID:YegStso1.net]
むしろ>>112の説明で何がわからないのかがわからない。
出来ないとは思うけど

123 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 20:43:03.17 ID:G+oloE/W.net]
>>119
int hogeeeeeee(int i){return hogeeeeeee(i);}
void main(){hogeeeeeee(1); return;}
これが戻り値が不定にならないと思うのと同じ



124 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 20:44:02.06 ID:fKKhgssi.net]
>>91
おお、知らなかった
C++11でできるようになってたんだな

125 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 20:50:29.42 ID:G+oloE/W.net]
テンプレートは動的でなく静的だからね
TempClass< float, 6 > test1; // OK
TempClass< char, items++ > test2; // Error, second parameter
// must be constant.

126 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 21:03:10.32 ID:D704J011.net]
ちょっと考えたけど使い道無さそうだわ
ideone.com/hnYBeO

127 名前:デフォルトの名無しさん [2015/09/03(木) 21:04:11.91 ID:yKj1FtgQ.net]
#include <iostream>
#include<tuple>
using namespace std;

int main() {
using A=std::tuple<B*,int>;
using B=std::tuple<int,A*>;

return 0;
}
どうやってこのエラーを取り除けるのでしょうか?

128 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 21:08:45.94 ID:fKKhgssi.net]
>>124
それは規格に無理と書いてある

129 名前:デフォルトの名無しさん [2015/09/03(木) 21:14:36.19 ID:yKj1FtgQ.net]
むりなんすか
ありがとうございました

130 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 21:16:27.91 ID:G+oloE/W.net]
>>124
テンプレートは生成が静的だから完全解決できないと生成できません
プログラムコードも静的だから完全解決できないこういうコードはできません
int hoge(int i){return hage(i);}
int hage(int i){return hoge(i);}
void main(){int ret=hoge(1); return;}
hogeかhageかでif分岐などで解決しないと実行できません
>>124みたいなテンプレートは↑こういう風に解釈されます

131 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 21:31:53.50 ID:fKKhgssi.net]
>>126
14.5.7
>The type-id in an alias template declaration shall not refer to
>the alias template being declared. The type produced by an alias
>template specialization shall not directly or indirectly make use of
>that specialization.
要するにテンプレートの再帰型は直接であれ間接であれ使えない

132 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 21:47:39.21 ID:G+oloE/W.net]
どういうのがやりたいのかわからんけど、↓でそれの何ができないの?
class base{
public:
 base(base& n){m_p=&n;}
 base* m_p;
};
class A : public base{
public:
 A(A& n) : base(n){;}
};
class B : public base{
public:
 B(B& n) : base(n){;}
};

133 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 22:00:58.39 ID:ujbBBsKz.net]
コテハン=キチ○イ の法則



134 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 22:06:39.08 ID:G+oloE/W.net]
>>129
でA←→Bの相互通信がしたいなら
messengerクラスを独立に作ればいいだけ

135 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 22:09:18.49 ID:G+oloE/W.net]
 base* m_p;
つかこれはthisポインタだな

136 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 22:12:34.19 ID:G+oloE/W.net]
要するにクラス参照の持ち合いなんて
baseクラスからAとBを派生させて
独立なメッセージクラスで通信すりゃあいいんだよ

137 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 22:19:52.99 ID:G+oloE/W.net]
abstract factoryパターンだろ

138 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 22:22:17.51 ID:hvDmk3I7.net]
この馬鹿はさっきから何言ってるの?
ビョーキなの?

139 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 22:39:04.34 ID:G+oloE/W.net]
要するにAとBのクラス参照の持ち合いなんて
baseクラスからAとBを派生させて
独立なメッセージクラスで通信すりゃあいいんだよ
デザインパターンではabstract factoryパターンだろ
そのまんまだよ

140 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 23:14:36.34 ID:fKKhgssi.net]
なんのこっちゃ

141 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 23:18:52.70 ID:yR6wfki7.net]
1) 釣りである
2) 知ったかしなきゃ死ぬ病気である
3) 本屋にくるおしゃべり天使みたいにスレでもうわごとレスを止められない
4) 本人はまじめだが知能がいちじるしく低い

142 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 23:24:43.23 ID:G+oloE/W.net]
class base{
public:
 int m_val;
 base(int i):m_val(i){;}
 virtual int func(int i){return i;}
};
class add:public base{
public:
 int func(int i){return m_val+i;}
};
class sub:public base{
public:
 int func(int i){return m_val-i;}
};

base *p,*q;//abstract factoryパターン
int r;//メッセージクラス
p=new add(21); r=p->func(7);
q=new sub(r); r=q->func(7);

143 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 23:34:56.29 ID:G+oloE/W.net]
class base{
public:
 int m_val;
 base(int i=0):m_val(i){;}
 virtual int func(int i=0){return i;}
};
class add:public base{
public:
 int func(int i=0){return m_val+i;}
};
class sub:public base{
public:
 int func(int i=0){return m_val-i;}
};

base *p,*q;//abstract factoryパターン
int r;//メッセージクラス
p=new add(21); r=p->func(7);
q=new sub(r); r=q->func(7);

intを任意のクラスにしたらなんか色々出来そうだろ



144 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 23:41:00.21 ID:G+oloE/W.net]
ありゃ、コンストラクタ忘れた
class base{
public:
 int m_val;
 base(int& i=0):m_val(i){;}
 virtual int func(int i=0){return i;}
};
class add:public base{
public:
 add(int& i=0):base(i){;}
 int func(int i=0){return m_val+i;}
};
class sub:public base{
public:
 sub(int& i=0):base(i){;}
 int func(int i=0){return m_val-i;}
};

base *p,*q;//abstract factoryパターン
int r;//メッセージクラス
p=new add(21); r=p->func(7);
q=new sub(r); r=q->func(7);

intを任意のクラスにしたらなんか色々出来そうだろ

145 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 23:56:33.17 ID:fKKhgssi.net]
薬飲んだらすぐ寝ないと駄目だぞ

146 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 00:38:45.05 ID:ye/5uETN.net]
>>112
これでどう?

#include <tuple>
struct S;
typedef std::tuple<S> TS;
struct S { TS* p; };

TS loop{S{&loop}};

147 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 00:53:27.48 ID:ye/5uETN.net]
>>83
なんか変な回答ついてるけど、ふつうに↓でコンパイル通るよ。
class B;
class A {
B& b;
};
class B {
A& a;
};

148 名前:デフォルトの名無しさん [2015/09/04(金) 01:15:43.42 ID:IG+8/rPl.net]
循環【参照】か

149 名前:NAS6 ◆n3AmnVhjwc [2015/09/04(金) 01:16:03.14 ID:tzKKrHnI.net]
>>144

それだと、どちらかを先に完全確定する必要があるんだけど
まぁ、とりあえずデフォルトコンストラクタでもいいけど
実体作った後でもいいけど、A,Bはどんな状態遷移すると思う?

class B;
class A {
 int m_val;
 B& m_b;
 A(){;}
 A(B& b):m_b(b){;}
};
class B {
 int m_val;
 A& m_a;
 B(){;}
 B(A& a):m_a(a){;}
};

A a();
B b(a);
a.m_b=b;

これで、マルチスレッド環境だったりしたら、かわいそうなことに・・・

150 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 01:27:40.32 ID:1ELVgZ8Y.net]
>>144
相互に参照を持つように初期化したいという意図だろうから
それじゃ回答になっていないし、他の人が既に回答済み

151 名前:NAS6 ◆n3AmnVhjwc [2015/09/04(金) 01:28:13.61 ID:tzKKrHnI.net]
志村Kんの志村、後ろ、後ろ、状態

152 名前:NAS6 ◆n3AmnVhjwc [2015/09/04(金) 01:36:42.35 ID:tzKKrHnI.net]
循環参照する必要があるなら
アブストラクトファクトリパターンで
シングルトンパターンのメッセージクラスで
応答になるんだろ

153 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 01:41:27.56 ID:ye/5uETN.net]
>>146-147
そういうことか。ありがとう。
いちおう↓こんなのはできるけど、これが望むものなのかどうかはやっぱりわかんないね。

class B;
struct A {
B& b;
};
struct B {
A& a;
};
struct Loop { A a; B b; } loop = {{loop.b}, {loop.a}};



154 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 01:46:02.11 ID:ye/5uETN.net]
>150 よりこっちのがいいかな。
struct Loop { A a{b}; B b{a}; } loop;

155 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 02:03:19.63 ID:1ELVgZ8Y.net]
それならc++03でもいけるね
コンストラクタ書く必要はあるけど

156 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 03:33:33.23 ID:CNzc1DB/.net]
>>150
AもBも他のクラスのメンバとするならば、初期化で問題なくインスタンス化できるという話ですか?
いずれにしろAとBをマネージするクラスを作るのは避けられないですかね?

>>152
どちらもgccのc++03でいけましたが、>>151はc++03だと警告が出ました
コンストラクタは書かなくても大丈夫ではないですか?

157 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 04:59:59.47 ID:ukgXeb3f.net]
>>153
どっちも参照しかもって無いんだから誰かが実体持つ必要があるだろ。
それは相互に参照してようがしてまいが変わらない

158 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 05:04:41.54 ID:1ELVgZ8Y.net]
>>153
C++03でクラス化するにはコンストラクタがいるよ
それと試しにg++(gcc)でやってみたけど、
C++11でのみ有効な機能っていう警告が出たよ
それじゃなかった?

159 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 06:17:53.16 ID:rG9hvPUX.net]
>>101
コンソールに出力すると
コンソールの通信速度に引っ張られて
プログラムの動作が遅くなる
デバッグだからと言って無闇に大量に出力しないように気をつけないといけない

160 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 08:17:29.72 ID:9mN0gzGK.net]
余計なお世話だ

161 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 08:58:14.87 ID:voaTutYw.net]
コンソールってバッファリングしてないのか?

162 名前:デフォルトの名無しさん [2015/09/04(金) 11:55:39.86 ID:1AVS2Ktf.net]
>>156
言うだけ無駄
どーしてもcoutと手段が目的化してる

163 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 12:28:24.29 ID:s9W6t8fF.net]
やぱログに吐いた方がいいって事ですか



164 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 12:30:58.91 ID:8nJVYQKk.net]
>>154
mainとかの関数内ではAやBのインスタンス作れないですよね?
何かしら方法あるのかな

165 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 12:37:05.16 ID:g9gAlQ8r.net]
>>161
普通に作れるでしょ…

166 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 14:48:15.68 ID:yKUUH6cx.net]
どうでもいいけどcerrじゃ

167 名前:デフォルトの名無しさん [2015/09/04(金) 17:07:42.09 ID:ynK+SMBx.net]
>>156
>>158
リングバッファに貯めて別タスクでワイヤレスのコンソールに吐き出させています
>>160
確かにそうかもしれません。
主目的は、標準ライブラリの移植です。
>>163
それでもかまいませんが
やらなくてはならないことは同じではないかと思いました。

ちなみにiostreamをヘッダファイルに加えると以下のようなエラーが出ます
hoge.cpp:(.text.startup+0x48): undefined reference to `__dso_handle'
/path/to/libstdc++.a(system_error.o): In function `_GLOBAL__sub_I__ZNSt14error_categoryC2Ev':
system_error.cc:(.text.startup._GLOBAL__sub_I__ZNSt14error_categoryC2Ev+0x4c): undefined reference to `__dso_handle'

168 名前:デフォルトの名無しさん [2015/09/04(金) 20:19:10.44 ID:STCOa/Lw.net]
STLをビルドして組み込め。実装はただひとつでなくいくつもある。動作するやつで。

169 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 18:20:35.46 ID:pkvC4koK.net]
 
erosuga1.blog.fc2.com/blog-entry-3174.html

親戚のエロお姉さんとS◯Xwwwwwwwwwww
 

170 名前:デフォルトの名無しさん [2015/09/06(日) 23:13:13.97 ID:kzoJkPUN.net]
CのCHAR_BITに当たるものはC++だとなんですか

171 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 23:59:11.69 ID:TtEkoNQG.net]
>>167 CHAR_BIT かな。 []
[ここ壊れてます]

173 名前:デフォルトの名無しさん [2015/09/07(月) 19:34:51.82 ID:XjY9JrjD.net]
nextとhasNextはnextを実装するときコピーが必要だが終端がわかっていればnextだけで進める
moveNextとcurrentはcurrentを実装するときコピーはいらないが進むのにmoveNextが必要という
トレードオフがあると思いませんか?



174 名前:デフォルトの名無しさん mailto:sage [2015/09/07(月) 20:08:22.86 ID:AAyuiqtl.net]
奇遇だな
ちょうど俺もそう思っていたところだ

175 名前:デフォルトの名無しさん [2015/09/07(月) 21:24:45.26 ID:107fD43G.net]
え!?俺も昨日同じこと考えたとこだった!






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

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

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