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


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

スレを勃てるまでもないC/C++の質問はここで 12



1 名前:デフォルトの名無しさん [2009/07/19(日) 22:32:32 ]
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。

過去ログ
スレを勃てるまでもないC/C++の質問はここで
pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
pc11.2ch.net/test/read.cgi/tech/1187521676/
スレを勃てるまでもないC/C++の質問はここで 4
pc11.2ch.net/test/read.cgi/tech/1221633708/
スレを勃てるまでもないC/C++の質問はここで 5
pc11.2ch.net/test/read.cgi/tech/1230516307/
スレを勃てるまでもないC/C++の質問はここで 6
pc11.2ch.net/test/read.cgi/tech/1231564903/
スレを勃てるまでもないC/C++の質問はここで 7
pc11.2ch.net/test/read.cgi/tech/1232983248/
スレを勃てるまでもないC/C++の質問はここで 8
pc12.2ch.net/test/read.cgi/tech/1235921779/
スレを勃てるまでもないC/C++の質問はここで 9
pc12.2ch.net/test/read.cgi/tech/1240022781/
スレを勃てるまでもないC/C++の質問はここで 10
pc12.2ch.net/test/read.cgi/tech/1242300936/
スレを勃てるまでもないC/C++の質問はここで 11
pc12.2ch.net/test/read.cgi/tech/1245059383/

92 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 21:01:41 ]
>>84
浮動小数点の指数部を取り出して0.3を掛ける。


93 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 21:27:25 ]
>>92
標準C++準拠だとして、それで行けるの?

94 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 22:13:22 ]
1000までの数で5a+7b+11c+13d+17e(aからeは0以上の整数)で表せる
全ての数のリストを求めるにはどうすれば良いですか


95 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 22:25:04 ]
LinuxでC++のプログラム開発するときって、
今は、どうするのが普通?

Eclipseとか使うものなのか?

俺が、大昔にやったときは、Emacs上で全てをシコシコ
してたが、時代は変わってない?

96 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 22:26:20 ]
>>94
深さ優先探索の考え方でできるよ

97 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 22:26:21 ]
>>83
現在は残念ながら一般的には無理。
ただし、デフォルト初期化で良ければ、Triange(): m_p() {}とは書ける。

>>93
std::frexpが使えると思う。

98 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 22:32:18 ]
>>94
表せない数が1 2 3 4 6 8 9だけじゃねーかw

99 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 22:42:21 ]
まじっすか
実際は問題がもっと複雑で、5,7,11,13,17が
数千個の合成数になります
ただ、考え方は一緒かと思って簡略化してしまったもので

とりあえず深さ優先探索で頑張ってみます


100 名前:83 mailto:sage [2009/07/25(土) 23:01:22 ]
>>97
int型の配列を初期化しているサンプルを見つけたので
似たようにして初期化できないか苦しんでました。デフォルト値では初期化できるんですね
とりあえず諦めます。ありがとうございました。



101 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 23:02:16 ]
数千個・・・って逆に表せない数字減るんじゃねーか?
一回表せた数字の整数倍は全部表せるから
幅優先でやって倍数をチェックしたほうが早くなると思う

102 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 23:02:29 ]
>>100
現行のC++では無理。
ごまかしで良ければboostで出来たと思う。

103 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 23:20:07 ]
#include <iostream>

class hoge {
private:
    struct fuga {
        fuga(int num[3], int v1, int v2, int v3) {num[0] = v1; num[1] = v2; num[2] = v3;}
    };

    fuga m_fuga;
    int m_num[3];

public:
    hoge(int v1, int v2, int v3) : m_fuga(m_num, v1, v2, v3) {
        std::cout << v1 << std::endl;
        std::cout << v2 << std::endl;
        std::cout << v3 << std::endl;
        };
};

int main(void) {
        hoge h(1, 2, 3);

        return 0;
}

なんか使うのが不安なコードだ・・・
コンストラクタ1回分無駄にするのを承知で素直に{}のなかで代入したほうがいいってことかな
つーか配列の数わかってて数も少ないならint num1, num2, num3;とかで十分だよね

104 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 23:45:48 ]
    struct fuga {
        fuga(int num[3], int v1, int v2, int v3) {num[0] = v1; num[1] = v2; num[2] = v3;}
    };

の num[3] はどこから拾ってきたのかしら

105 名前:94 mailto:sage [2009/07/25(土) 23:59:15 ]
やっと出来た
現時点でlimit=10000で50秒ぐらいかかるのでこれじゃ解けなさそう(しかもlimit周辺の値は若干不正確)
幅優先探索って、エラトステネスの篩みたいなやり方?

void solve(VI& v,set<int>& r,int limit){
VI tmp;
int m=*max_element(r.begin(),r.end());
int n=*min_element(v.begin(),v.end());
copy(r.begin(),r.end(),back_inserter(tmp));
for(int i=0;i<v.size();++i){
transform(tmp.begin(),tmp.end(),inserter(r,r.begin()),bind1st(plus<int>(),v[i]));
}
if(n+m<limit){solve(v,r,limit);}
}

//vは{5,7,11,13,17}
//rに結果が入る
solve(v,r,1000);

106 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 00:03:31 ]
追記:rの初期値も{5,7,11,13,17}

107 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 06:41:59 ]
>>95
プロジェクトによるけど、viとmakeでやってるところも普通にあるよ。
開発にEclipse使うばあいでも、Eclipseインストールしてなくても
ビルドできるようにしておくことが多い。

108 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 12:28:08 ]
>>94
なんか題意を正しく把握できてるか不安だが、こんなんでどうよ?

#include <stdio.h>

#define N 1000

char list[N+1];
int num[5] = {5,7,11,13,17};

void f(int n, int pos)
{
int i;

list[n] = 1;
for(i=pos; i<5; i++) {
int temp = n + num[i];
if(list[temp]) continue;
if(temp > N) return;
f(temp, i);
}}

int main(void)
{
int i;

f(0,0);

for(i=0; i<=N; i++) if(list[i]) printf("%d ", i);

return 0;
}

109 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 12:46:35 ]
>>108
>>99
数千個らしいよ

110 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 19:34:33 ]
なんでもかんでもクラス化するのって逆に害ですよね?
ビットフラグとかむき出しのほうがいいと思うんですけど



111 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 19:55:16 ]
>>110
確かに
> なんでもかんでもクラス化
は害になることもあるよ。

でも「なんでもかんでもクラス化すべきでない」っていう人の
大概は、「適切な対象でもクラス化できる技量がない」人だったりするんだよね。

112 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 20:11:44 ]
>>110 何でもかんでもクラス化するべきですよ。ビットフラグなんか特に。

113 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 21:36:50 ]
1次元で確保された配列を二次元とみなして使うとして
このとき配列Aの(x1, y1)から(x2, y2)のデータを配列Bの(X, X)から(X+(x2-x1), Y+(y2-y1))にコピーしたい時は
ループまわしてひとつひとつコピーするしかないでしょうか

114 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 21:51:27 ]
>>113
基本的にはそう。
環境によってはSIMD使って16byteまとめて転送
の様な高速化はできるけど。

115 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 13:25:52 ]
>>113
せめてX方向1ライン分くらいmemcpyしたら?

116 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 13:43:11 ]
>>113
x方向にデータが連続していると言う条件はつくけど、std::copyでも使えばいいんでない。
# cなら>115で。

117 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 13:50:18 ]
そうですね組み込み以外でもつかうんでstd::copyします
>>115,>>116どうもでした

118 名前:デフォルトの名無しさん [2009/07/27(月) 19:18:23 ]
C++
コンソールで、カーソルの位置を一行上に挙げたいのだが。
エスケープシーケンスは使えん。
使えるように設定できるのは知ってるが、別の方法で頼んだ。

119 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 19:21:34 ]
で、その結果は?

120 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 20:32:20 ]
shared_ptrって

(*p).hoge() と p->hoge();ってどっちがいいの?



121 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 21:01:46 ]
p->hoge();


122 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 21:46:51 ]
>>120
何のためにアロー演算子があると思っているのだ。
p->hoge()
が望ましい。

123 名前:助けて [2009/07/27(月) 22:16:07 ]
10進数から2進数に変える時、2進数を補数表現で表すプログラムを教えて下さい。

ドシロウトなんで、お願いします。

124 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 22:19:51 ]
>2進数を補数表現で表す
???????????????

125 名前:デフォルトの名無しさん [2009/07/27(月) 22:39:30 ]
>123

十進数 -10 を変換したとして
-1010 ではなく 1111111111110110 と表示したいのか?

126 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 22:49:21 ]
補数って、1の補数とか2の補数ってやつだよな。
もう忘れた。

127 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 22:53:44 ]
>>123
signed intなりsigned longに代入したあとに1ビットずつビット演算で取り出す

128 名前:助けて [2009/07/27(月) 22:54:36 ]
>125

はい。その通りです。

129 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 23:05:28 ]
class hoge {
private:
int *p;

public:
hoge(int x) : p(new int[x]) {}
~hoge() {delete [] p;}
void fuga() {・・・}
};

int main(void) {
try {
std::cin >> x;
hoge h(x);
}
catch(std::bad_alloc& e) {
std::cout << e.what() << std::endl;
}

h.fuga();

return 0;
}

↑スコープが外れちゃうからh.fuga()でコンパイルエラーになってしまう
自動変数に対してtry-catchする場合はtryスコープを伸ばすしかない?
保守性を考えて自動変数からスマートポインタに変えるのがいいのかな?

130 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 23:18:10 ]
>>128
#include <bitset>
#include <iostream>

using namespace std;

int main() {
const unsigned long value = 10;

bitset< 16 > b( value - 1 ), result;
result = ~b;
cout << result.to_string() << endl;
}



131 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 23:23:38 ]
>>129
君が try しているのは hoge オブジェクトじゃないのか?
それなのに、どうして try の外でそのオブジェクトを使おうとするのだ…。

132 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 23:41:46 ]
tryしたいのは生成だけなのに延々としたまでスコープを伸ばしたくないんです
tryスコープの中って処理重くなりそうだし、できるだけ短くしたほうがよかないですかね?

133 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 23:44:25 ]
catchは下のほうにまとまってたほうがよかないか?

134 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 23:46:42 ]
tryの中だから遅くなるなんてことはない。
実装にもよるが、tryに入るとき、抜けるとき、throwするとき、(catchして)catch節を抜けるときなど
基本的に要所要所でしかコストはかからないとみていい。

135 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 23:47:17 ]
>>132
わかるわかる。
自転車がパンクしてるかどうかをチェックしたいし、その結果は大事だけど、その後はもちろん自転車に乗るってことだよね

136 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 23:51:54 ]
あ、あんまし遅くならないんですね
ずっと中の人が監視してなにか操作するたびチェックしてるのかと思ってた・・・
とすると
void func() {
    try{
        // 全処理
    }
    catch(ex1 &e) {
        // 〜
    }
}
    catch(...) {
        // 〜
    }
}
みたいにやるほうがいいのか
どうもどうも。すっきりしました

137 名前:助けて [2009/07/28(火) 00:01:45 ]
>130

ありがとです

138 名前:デフォルトの名無しさん [2009/07/28(火) 09:48:09 ]
なんでC++の標準ライブラリのヘッダって、.h って統一的なファイル名の
つけ方をやめちゃったの?
拡張子ついてないから、扱いつらくない?

139 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 10:27:12 ]
>>138
多分苦肉の策だと思う

140 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 11:01:49 ]
>>138
標準化委員会に言ってくれ。

まあ一応 統一的に(一様に).h付いてないから
俺は許せるけど。



141 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 11:17:45 ]
>>138
それがファイルでなくても構わないから。

142 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 11:23:14 ]
タイプ量が減ってありがたいじゃないか。

143 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 11:35:21 ]
>>141
その点は、Cの.hも同じですがね。

144 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 14:02:41 ]
.hppが一番クール

145 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 14:20:10 ]
>>138
Effective C++の49項を見る限りは、.hと差別化する最も単純な方法として
拡張子を無くす案が採られたみたいだね。

146 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 15:03:46 ]
hxxじゃだめだったんかな

147 名前:デフォルトの名無しさん [2009/07/28(火) 15:08:47 ]
画面に指定した座標の点をプロットしたいのですが、
そういったことが出来る簡単なC++ライブラリはありますか?


148 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 15:11:05 ]
DXライブラリを使いましょう

149 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 15:11:10 ]
Win32API

150 名前:デフォルトの名無しさん [2009/07/28(火) 15:13:10 ]
ありがとうございます。
DirectXスレかAPIスレに逝ってきます



151 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 15:39:11 ]
>147がLinux使いだったら大笑いだな。まさしく、井蛙の愚だ。

152 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 15:44:43 ]
>>151
敢えて触れない方がいいと思ったけど、とっても気になったので理由を聞かせてもらおうか

153 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 16:05:34 ]
>>151
何で?


154 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 16:18:05 ]
DXライブラリもWinAPIもWindows用だからだろ。JK

155 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 16:22:26 ]
MACかもしれないといってみるテイスト

156 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 17:14:57 ]
それがなんで井蛙の愚につながるの?
誰も井の中の蛙ではなくないか?

157 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 17:17:58 ]
自身の環境を書かない>147や、Windowsだと決めて掛かる>148-149をからかったんだろうけれど、
顧みすれば>151自身が井の中の蛙になっている罠。

158 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 17:22:37 ]

井(い)の中の蛙(かわず)大海(たいかい)を知らず

自分の狭い知識や考えにとらわれて、
他の広い世界のあることを知らないで
得々としているさまをいう。
井蛙(せいあ)。

まあ・・・なんかどうでも良くなってきた。

159 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 17:24:58 ]
PC
デバイスA デバイスBでシリアル通信する。

PCからはデバイスA,Bに対して交互に1S間隔で
リードコマンドを発行している。
AまたはBがある状態になるとリードコマンドに対して
1バイトの'b'を返すようになる。
デバイスA、Bともには電源立ち上げ時バージョン情報等を
PCに送るがその文字列の中に'b'が含まれている。
PC側はリードコマンドに対する応答の'b'だけを判断したい。
デバイスA,Bの電源立ち上げ時の情報は固定ではく、'b'が
含まれているとする。
このような内容だとどのようにコマンドに対する応答の'b'
であると判断するのがよいでしょうか?

160 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 17:32:02 ]
PCのリードコマンドを出す前にPCの受信バッファを空にしておくとか?



161 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 17:36:31 ]
>>157
決めてかかったわけじゃないですよ
質問者が使う環境じゃなきゃ質問者は勝手に捨て置くでしょ

162 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 18:21:09 ]
掛け声みたいだな
「無礼者め手打ちにしてくれる、井蛙(せいあー)!!」

163 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 19:43:24 ]
DXライブラリでゲームを作り始めたのですが、
メインループの書き方がおかしくないか不安です ><

#include "GV.h"

int WINAPI WinMain(
HINSTANCE hI,HINSTANCE hP,
LPSTR lpC,int nC
)
{
ChangeWindowMode(TRUE);
if(DxLib_Init() == -1) return -1;

Flame* T = new Flame;
SetDrawScreen(DX_SCREEN_BACK);
while(!(ProcessMessage()) && !(CheckHitKey(KEY_INPUT_ESCAPE))
&& (T -> MainLoop()) && !(ScreenFlip()) && !(ClsDrawScreen()));

DxLib_End();
return 0;
}
こんな感じなんですが・・・・


164 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 19:48:27 ]
もしかして: Frame

165 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 19:50:52 ]
うわぁ・・・・
勢いだけで作成中なので英語力のなさが出た結果だとしか・・・
orz(それでもゲームを作りたいんです)

166 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 19:54:48 ]
Yahoo!辞書 - flame
ttp://dic.yahoo.co.jp/dsearch?enc=UTF-8&p=Flame&dtype=1&dname=1na&stype=0&pagenum=1&index=02737600


167 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 20:03:24 ]
殻っていみのフレームのつもりがフレイムになってたなんて・・・
もしかしてこの質問ってスレチってやつでしょうか?

168 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 20:26:56 ]
ゲームプログラムなら俺に聞け ってスレがあるよ

169 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 20:28:48 ]
ゲ製の方を紹介してやれよ

170 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 20:46:04 ]
ここより雰囲気のいいスレッドが見つけられないオ↓レ↑は、
専ブラで2chを覗く程度の初心者です。



171 名前:163 mailto:sage [2009/07/28(火) 21:31:24 ]
とりあえず
ttp://pc11.2ch.net/test/read.cgi/gamedev/1238429676/
こっち行ってみます。ふんいきこわいけど・・・

スレチすマソでしたー。



172 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 23:21:22 ]
classの全部のメソッドで通常の例外チェック再スローと
STLなどの外部ライブラリが出すかもしれない把握できない例外用のcatch(...){throw UnknownException();}
をやってるんですが、やりすぎでしょうか?
例外ってドキュメントが少なくてどうやればいいのかなかなか方針が定まりません

173 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 23:51:33 ]
>>172
どう考えるかによるんじゃね?
例えばSTLの投げる例外ならそのままthrow;で外に再送してあげた方が
むしろ親切では?


174 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 00:33:01 ]
カプセル化の事を考えて例外も隠蔽して
指定したもの以外出さないほうがいいかなぁと思ったんですが・・・

175 名前:173 mailto:sage [2009/07/29(水) 07:23:08 ]
>>174
例外クラスは知ってるよね?
例えば
C++編(標準ライブラリ) 第27章 例外クラス
ttp://www.geocities.jp/ky_webid/cpp/library/027.html
std::exceptionクラスを継承したものについては
そのまま投げてあげた方が。。
まあ再送しなくても内部で処理できる問題だったらいいけど、
そうでなくて全部例外を飲み込んでUnknownException();にしちゃうのは
どうだろう?

だれか他の方も意見くださいな。

176 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 19:50:12 ]
shared_ptr<> でnew deleteがほんとに1対1になってるか確かめたいんですけど
グローバル変数を用意してコンストラクタで++、デストラクタで--とすればいいのかなと思うんですが
これだと組み込み型のカウントをするのに困ります。どうすれば良いでしょうか?

177 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 21:00:36 ]
>>176
グローバルなoperator newとoperator deleteを定義すればいいと思う。

178 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 21:08:40 ]
>>176何故?何のため?


179 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 22:07:31 ]
コードを重複して書くのがいやなのでtemplateで書いた
けど公開するのは、例えば<int>と<double>だけに限定したい
こんなときはどうすればいい?

class Hoge {
private:
template <typename T> class Fuga {};

public:
typedef Fuga<int> _IntFuga;
typedef Fuga<double> _DoubleFuga;
};

typedef Hoge::_IntFuga IntFuga;
typedef Hoge::_DoubleFuga DoubleFuga;

これよりいい方法あったら頼む!

180 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 22:13:07 ]
明示的な実体化をした実装を別ファイルに移して、
クライアントコードから見えなくする



181 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 22:54:19 ]
>>180
いまいちわからないんだけど、

hoge.h
template < typename Type > class Hoge ;
template <> class Hoge< int > ;
template <> class Hoge< double > ;

hoge.cpp
#include "hoge.h"
template <> class Hoge< int > {} ;
template <> class Hoge< double > {} ;

main.cpp
#include "hoge.h"
int main( void ) { Hoge< int > ihoge ; Hoge< double > dhoge ; /* 〜 */ ; return 0 ; }

みたいな感じ・・・?
これだと結局重複したコードを書いてるから意味無いような
やりかたが間違ってるのかな?

182 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 22:58:33 ]
ていうか↑コンパイルできないですね
もうちょっと勉強してきます

183 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 23:01:13 ]
template関連はごちゃごちゃしてるので記憶が曖昧だが許してくれ。

hoge.h
template < typename Type > class Hoge;

hoge.cpp
template < typename Type > class Hoge { } ;
template class Hoge < int > ;
template class Hoge < double > ;

main.cpp
(同じにつき略)

184 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 02:13:34 ]
class hoge{
private:
class hoge_sub{
};
std::vector<hoge_sub> a(20);
public:
};

class内で固定長のclass型の配列を作りたいのですが
VC++で
error C2059: 構文エラー : '定数'
というエラーを吐かれてしまいます
このような場合どうすれば良いのでしょうか

185 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 02:22:50 ]
>>184
コンストラクタ初期化子
class hoge{
private:
class hoge_sub{
};
std::vector<hoge_sub> a;
public:
hoge() : a(20) {}
};

186 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 02:23:01 ]
vectorはそもそも配列じゃないですし
可変長なので固定長にもなりません。^^
vectorではなく、配列を使ってください。
hoge_sub a[20]; のようにするのです。

187 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 02:52:31 ]
>>185,186
ありがとうございます
class型の配列を扱いたいなと思った時に調べましたところ
vectorを使う方法が紹介されてましたので、誤って認識していました


188 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 07:17:30 ]
>>187
せめて入門書一冊分くらいは基礎を学んでおいた方がいいとおもうぞ。

189 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 22:45:01 ]
>>188
入門書として適切なものを教えてください。
いや、手元には独習がありますが、ぜんぜん足りないような気がしているのです。

190 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 00:53:20 ]
ハーバートシルト先生に教えてもらっておいてまだ足りないとな?



191 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 08:06:09 ]
独習C++なんて捨ててaccelerated C++とexceptional C++を読むんだ

192 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 10:16:59 ]
独習C++半分ぐらい読んで、EffectiveC++、More〜を全部読んで、独習デザインパターンも半分ぐらい読んで、ゲーム作る程度にはそれで十分だった






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

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

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