[表示 : 全て 最新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/

49 名前:デフォルトの名無しさん mailto:sage [2015/09/01(火) 22:07:22.53 ID:AdYeXoWK.net]
昔ながらのMVC開発のモデルなら
データ構造をメンバーとして持つ感じじゃないか
最近のなんやらかんやらは知らんが

50 名前:デフォルトの名無しさん mailto:sage [2015/09/01(火) 22:09:34.18 ID:AdYeXoWK.net]
つかMVCってC++でやることってあるの?
昔Javaを使ったWebの開発現場では煩い位に聞いたけど

51 名前:デフォルトの名無しさん mailto:sage [2015/09/01(火) 22:14:30.02 ID:nXuOkFi0.net]
特定の文脈でしか通じない用語を
断り無しに連発するのは馬鹿の特徴

52 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 00:21:31.48 ID:TZYcxUIB.net]
チンピラの群れがお互いに喧嘩を売って歩くスレ

53 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 08:20:41.73 ID:8HjhIrCM.net]
お互い売るけど、どちらも買わない

54 名前:デフォルトの名無しさん [2015/09/02(水) 11:40:01.60 ID:3Er4L3kb.net]
#include<iterator>
#include<fstream>
#include<iostream>
int main(){
std::ifstream f{"abc"};
std::istream_iterator<unsigned char> i{f};
for(auto a=0;a<5;++a)
std::cout<<" "<<std::hex<<static_cast<int>(*i++);
return 0;
}

このコードでabcという名前の読み込むファイルの中に16進数で0Cがあると
なぜか表示されなかったり0が2個になったりします
何がわるいのですか?
g++とclang++で試しました

55 名前:デフォルトの名無しさん [2015/09/02(水) 11:52:12.56 ID:3Er4L3kb.net]
自己解決しました

56 名前:デフォルトの名無しさん [2015/09/02(水) 12:00:08.37 ID:3Er4L3kb.net]
直ったと思ったら勘違いでした
教えてください

57 名前:デフォルトの名無しさん [2015/09/02(水) 12:17:49.56 ID:3Er4L3kb.net]
こんどは直りました
ありがとうございます



58 名前:デフォルトの名無しさん [2015/09/02(水) 12:19:48.06 ID:kvoheval.net]
どういたしまして

59 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 12:22:36.42 ID:RN6F+W1d.net]
>>54
istream_iteratorは>>演算子によって文字を読取るため、0x0cのようなホワイトスペース文字は
スキップする

こいつを読み取らせるにはバイナリ入出力を使う

#include <fstream>
#include <iostream>
#include <iomanip>

int main()
{
std::ifstream f {"abc.txt", std::ios::in | std::ios::binary};
int x;
// std::istream_iterator<unsigned char> i {f};
// for (auto a = 0; a < 5; ++a)
// std::cout << " " << std::hex << static_cast<int>(*i++);
while ((x = f.get()) != EOF) {
std::cout << " " << std::setw(2) << std::setfill('0') << std::hex << x;
}
}

60 名前:デフォルトの名無しさん [2015/09/02(水) 12:25:51.06 ID:3Er4L3kb.net]
unsetf(std::ios::skipws)でできましたよ

61 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 12:26:31.09 ID:RN6F+W1d.net]
>>58
同じことだな

62 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 12:29:04.68 ID:RN6F+W1d.net]
他の方法としてはstd::noskipwsをその都度指定するか

www.cplusplus.com/reference/ios/skipws/

63 名前:デフォルトの名無しさん [2015/09/02(水) 12:29:52.92 ID:kvoheval.net]
や っ ぱ ス ト リ ー ム は ク ソ だ わ

64 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 12:34:52.18 ID:RN6F+W1d.net]
慣れの問題だろ
istream_iteratorが>>演算子を内部で使ってるとちゃんと書いてある本を持ってれば分かる話

65 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 12:37:36.59 ID:pfz+JPDH.net]
>>47
ありがとう
モデルってビジネスロジック書くところだと勘違いしてた
もろにデータ構造そのものを指すんだな

66 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 13:03:07.04 ID:spisOxh2.net]
>>62はどういう意味ですか?

67 名前:デフォルトの名無しさん [2015/09/02(水) 13:39:30.67 ID:3Er4L3kb.net]
<<を使わないために
istreambuf_iteratorを使いたいんですけど
ifstreamのrdbuf()をイテレーターの初期化にしてもできませんでした



68 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 19:01:21.83 ID:I203tbc8.net]
慣れの問題と思ってる奴はバカ
iostreamが糞なことに気づかないようではどうしようもない

69 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 20:13:37.89 ID:+ga1UiZL.net]
すいません初心者なんですけど
クラステンプレート質問させてください

例えば
templat e<class Type>
class A {
Type a;

public:
A() : Type() {};
もしくは
A(Type x = Type()) {};
}

みたいなイニシャライザやデフォルトテンプレート引数の場所に出てくる
Type() <- 括弧の中に何も入ってない
の意味を教えて下さい
本読んでも唐突に出てきてネット調べてもわからないです
両者が同じものなのか違うものかもわかんないです

70 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 20:14:35.25 ID:+ga1UiZL.net]
;の付け方グチャグチャだったけどそこはスルーしてください…

71 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 20:36:41.71 ID:4+szYIhP.net]
>>67
コンストラクタ呼び出し

72 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 20:42:45.88 ID:ygSRnlxE.net]
>>67
Type()はデフォルト初期化だよ
TypeがPODならゼロ初期化されるし、そうじゃなければデフォルトコンストラクトされる

73 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 20:45:27.50 ID:ygSRnlxE.net]
>>67には
;以外にも色々おかしいところはあるけどType()の意味は上の通り

74 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 20:54:19.65 ID:+ga1UiZL.net]
回答有難うございます
いただいた回答で意味が判りましたありがとうございます

自分で判った間違いは直しました、なんとなく気持ち悪いので
template <class Type>
class A {
Type a;

public:
A() : a(Type()) {}
もしくは
A(Type x = Type()) {}
};

そもそも初心者スレで聞くべきだったかもしれませんすいませんありがとうございます

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;

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






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

前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