■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

C++相談室 part29
251 名前:デフォルトの名無しさん :04/04/29 13:05
>>249
既に答えがわかってるもの以外人に相談しても答えられないだろ。再発明が嫌な奴はこのスレ
に来るなって琴田。
ところで、
数値計算するのに行列の演算ではなく操作というかインターフェースを提供してるだけ
のublasなんか使ってる椰子なんているのかね?実際の+/-/*以外の実際の演算は結局自分で
つくらにゃならんだろ?実数に限定するならnewmat の方がよっぽど便利
http://www.robertnz.net

252 名前:デフォルトの名無しさん :04/04/29 15:11
車輪は車輪でも俺の車輪はレース用のスペシャル仕様
市販品ではタイムが下がりますよ?

253 名前:デフォルトの名無しさん :04/04/29 16:23
>>252
スポンジタイヤを紙やすりで削ってますか?
シャーシは肉抜きしてますか?
タミヤの電池使ってますか?

254 名前:デフォルトの名無しさん :04/04/29 16:27
そして結局「適材適所」に落ち着くわけか

255 名前:デフォルトの名無しさん :04/04/29 18:33
>>236
オレの事かと思ってびっくりしたよw

256 名前:デフォルトの名無しさん :04/04/29 19:03
パフォーマンスがどうこう言ってSTLを
否定する>>252のような痛いヤシがいたが、
また息を吹き返したようだな(w

257 名前:デフォルトの名無しさん :04/04/29 19:11
>>256
お前は何もわかってないな

258 名前:デフォルトの名無しさん :04/04/29 19:16
>>257
お前がな。相当に痛いよw

259 名前:デフォルトの名無しさん :04/04/29 19:33
>>255のように謙虚になれないヤシって痛いよな。
ユーザーモードはすでにそれ自体がラッパーなのに、
それを自覚できない馬鹿のなんと多いことか。

260 名前:デフォルトの名無しさん :04/04/29 19:38
ラッパーと非ラッパーの二種類に分ける気かよ

無茶だなー

261 名前:デフォルトの名無しさん :04/04/29 19:38
じゃドライバとか作ってるとエライわけだな

262 名前::04/04/29 19:39
おまえら人間ってラッパーしか作ってないじゃん

263 名前:デフォルトの名無しさん :04/04/29 20:13
俺はトロンボーン奏者だ

264 名前:デフォルトの名無しさん :04/04/29 20:15
俺はフルート奏者だ

265 名前:デフォルトの名無しさん :04/04/29 20:15
yippy yo yippy yay
あれ、ここなんのスレだっけ

266 名前:デフォルトの名無しさん :04/04/29 21:15
俺はハーモニカ走者だ。

267 名前:デフォルトの名無しさん :04/04/29 21:16
俺は尺八掃射だ。

268 名前:デフォルトの名無しさん :04/04/29 21:53
利用しやすいインターフェイスの構築は立派なことだと思います。

269 名前:デフォルトの名無しさん :04/04/30 00:09
C++の数値演算ライブラリってなかなかいいのがないよ。liboctave+atlasがなかなかいいけど、
blitz風の行列の設定方法(A = 1,2,3,5,6;)が使いたいとか言い出すと結局自作せざるを得ない。

270 名前:デフォルトの名無しさん :04/04/30 00:17
C#が出てきたことでC++はなくなるんですか?

271 名前:デフォルトの名無しさん :04/04/30 00:27
C#でOS作れるのか?

272 名前:デフォルトの名無しさん :04/04/30 00:37
継承は何の為にある

273 名前:デフォルトの名無しさん :04/04/30 01:12
C++使いとしてはC#の存在が気になるんですけどね。
C#が出来たから何か良いことあるんですかね?

274 名前:デフォルトの名無しさん :04/04/30 01:35
すまん、知らんのだが、Windows以外でも使えるの? C#。

275 名前:デフォルトの名無しさん :04/04/30 01:40
本屋に行くとやたらとC#関係の本が並んでいるのが気になるところ。なんで?

276 名前:デフォルトの名無しさん :04/04/30 02:22
スレ違いだけどLonghornでWinFXがネイティブAPIになるからじゃないの。
つーかGW的な流れだね。

277 名前:デフォルトの名無しさん :04/04/30 02:56
オライリーのC#本を見たときは、妙な感慨があったな。

278 名前:デフォルトの名無しさん :04/04/30 03:53
C#の本ぱらぱら読んだだけなのだが、継承でsealとかoverrideを明示するのはC++にはない
新しい機能。こんなのはC++でもあっていいとオモタ。
俺はポインタ大好きなんで、明示的なポインタがないのは寂しいけど
-> がないのは確かに見やすいとオモタ。
ただ条件コンパイル指定の機能が弱いのと、
結局遅くてOffice作るには使えんかったというのはホントか?
少なくともデバドラは書けんが特にWin上の統合環境でVB/C++行き来しながら
アプリ書かんでいいのは楽ということらしい。・・・でいいんかな?
まぁ数値計算メインの椰子には用はないってことで。

279 名前:デフォルトの名無しさん :04/04/30 03:59
Winのアプリ屋がいうには最近ほとんどC/C++の仕事はなくC#がメインらしい。
でも組み込みやディジタル回路屋では全く話は別でC#のかけらもない。

280 名前:デフォルトの名無しさん :04/04/30 04:06
まあ、C#はまさに”次世代”のためのものだな。
スペック的にVS.netが動けるマシンじゃないのに開発してていらいらしたよ。
でも、コンパイル時にちょっと重いだけで一旦走り出せばそんなには気にならない。
C++の知識があれば習得は容易だけど、いろんな面でJavaの方が近いのはなんだかな・・・

281 名前:デフォルトの名無しさん :04/04/30 15:10
ピアソンのC++のテキストで、
「isspaceはワイド文字用のバージョーンでオーバーロードされている」というくだりがあるんだけど
確か、ctypeヘッダではisspace()は一つしか定義されてないし、それ以前に
Cの仕様のライブラリなんだから、オーバーロードされているはずないと思うんだけど・・・
誤訳かなんかと考えて宜しいでしょうか?

282 名前:デフォルトの名無しさん :04/04/30 15:25
iswspaceのことかなあ。

283 名前:デフォルトの名無しさん :04/04/30 18:28
C++知ってる奴には習得は容易というけど、両方いじくるはめになったら混同しそう。
monoってのが既にあるけど、adaやjavaまで手を広げたgccもサポートしそうだな。

284 名前:デフォルトの名無しさん :04/04/30 18:49
>>281
オーバーロードというよりtemplate版だが<locale>にある。
Cライブラリ関数にオーバーロードが追加されているのは珍しくない。
strchrとか、absとか<cmath>の各関数とか。

285 名前:デフォルトの名無しさん :04/04/30 19:56
>>284
サンクス。

286 名前:デフォルトの名無しさん :04/05/01 00:19
やっぱ
#if〜#endif
は欲しいよ。

287 名前:デフォルトの名無しさん :04/05/01 01:07
try、throw、catchを記述すると例外をthrowしなくても実行速度に禿しく影響しますか?

288 名前:デフォルトの名無しさん :04/05/01 01:11
>>287
理想としてはほぼ影響ないように実装できるはず、という話になるが、
現状のコンパイラのほとんどにはそこまで期待できないので、
実測しないと答えはわからない。

289 名前:デフォルトの名無しさん :04/05/01 01:25
>287
禿げしくてのは内容にもよるが、影響はある。
例外処理を行う以上、そのオーバーヘッドは避けられない。


290 名前:デフォルトの名無しさん :04/05/01 03:04
>>287
むしろ関数の入り口に throw() を書くように徹底すると
速度が上がると思うよ。

291 名前:デフォルトの名無しさん :04/05/01 03:43
>>290
残念ながらそれも実測するまでわからない。
http://www.gotw.ca/publications/mill22.htm
http://www.boost.org/more/lib_guide.htm#Exception-specification

292 名前:デフォルトの名無しさん :04/05/01 13:30
>>290
BCC5.6.4じゃあ逆に遅くなっちまった。

#include <iostream>
#include <boost/progress.hpp>

void func() {}

void func2() throw() {}

int main()
{
 {
  boost::progress_timer t;
  for (int i = 0; i < 100000000; i++)
   func();
 }
 {
  boost::progress_timer t;
  for (int i = 0; i < 100000000; i++)
   func2();
 }
}

293 名前:デフォルトの名無しさん :04/05/01 13:43
>>292
普通遅くなるだろう。関数のケツでcatch(...){terminate();}するのと同じ処理が入るわけで。


294 名前:デフォルトの名無しさん :04/05/01 13:51
ポカーン

295 名前:デフォルトの名無しさん :04/05/01 13:55
ポカーン

296 名前:質問者 :04/05/01 14:00
g++とicpcではfuncとfunc2の速度の差はほとんどありませんでした。
素人目に見ると、func()は任意の例外を搬出し、func2() throw()は例外を搬出しない事が
保障されているので、catch(...)を挿入すべきはむしろfunc()を実行するブロックだと思えるのですが
その辺どうなっているのでしょうか?


297 名前:デフォルトの名無しさん :04/05/01 14:07
>>296
規格嫁
例外を搬出しないことを保証するために、catch&terminateするんだって。
g++3でも有意の差がでるよ。throw()するほうが遅い。


298 名前:質問者 :04/05/01 14:14
禿本読んで書いてなければISダウソして読んでみます。
progress_timerじゃ差が分からんですね。

299 名前:デフォルトの名無しさん :04/05/01 14:16
int*をnewしてreturnする関数としてfunc,func2を作ってみた。

・func()のg++ -S結果

.globl func()
.type func(),@function
func():
.LFB2:
pushl %ebp
.LCFI0:
movl %esp, %ebp
.LCFI1:
subl $20, %esp
.LCFI2:
pushl $4
.LCFI3:
call operator new(unsigned)
leave
ret


300 名前:デフォルトの名無しさん :04/05/01 14:16
・func2() throw()のg++ -S結果

func2():
.LFB4:
pushl %ebp
.LCFI4:
movl %esp, %ebp
.LCFI5:
subl $20, %esp
.LCFI6:
pushl $4
.LEHB0:
.LCFI7:
call operator new(unsigned)
.LEHE0:
leave
ret
.p2align 2,,3
.L6:
incl %edx
je .L3
subl $12, %esp
pushl %eax
.LEHB1:
call _Unwind_Resume
.p2align 2,,3
.L3:
subl $12, %esp
pushl %eax
call __cxa_call_unexpected


301 名前:デフォルトの名無しさん :04/05/01 14:27
C++のstaticなメンバ関数ってどういう意味があるの?

302 名前:デフォルトの名無しさん :04/05/01 14:30
>>301
意味がないと思うなら使わなければいい。

C言語に意味がないと思うならアセンブリ言語を使えばいいというのと同じ。


303 名前:デフォルトの名無しさん :04/05/01 14:31
>>301
オブジェクトのインスタンスを生成せずに直接使える。

Class::Method();

見たいな感じで。

304 名前:デフォルトの名無しさん :04/05/01 14:31
>>302
どういう意味があるのか聞いているのですが。

305 名前:デフォルトの名無しさん :04/05/01 14:32
>>301
CClass::Func();
こんな使い方が出来るのでは?

306 名前:デフォルトの名無しさん :04/05/01 14:32
>>303
どういう意味があるのか聞いているのですが。


307 名前:デフォルトの名無しさん :04/05/01 14:33
>>305
どういう意味があるのか聞いているのですが。

308 名前:デフォルトの名無しさん :04/05/01 14:33
>>303
printfみたいな関数と同じようにつかえるんですね。
よくわかりました。
ありがとうございました。

309 名前:デフォルトの名無しさん :04/05/01 14:37
















よし。

310 名前:デフォルトの名無しさん :04/05/01 14:39
>>308
どういう意味があるのか聞いているのですが。

311 名前:デフォルトの名無しさん :04/05/01 14:51
JAVAでの

int count = 0;
while(count < 1) {
 try{
  ・・・ここで入力
 }
 catch (NumberFormatException e) {
  System.out.println("正しい入力をしてください");
  continue;
 }
 count++;
}

のようなことをBorland C++でやりたいのですが、どのようにすればよいでしょうか

312 名前:デフォルトの名無しさん :04/05/01 14:57
int count = 0;
while(count < 1) {
 try{
  ・・・ここで入力
  ・・・入力値チェック(エラーなら例外スロー)
 }
 catch (CHogeException e) {
  puts("正しい入力をしてください");
  continue;
 }
 count++;
}


313 名前:301 :04/05/01 15:02
なんか、質問した本人がいない間に、
お礼まで書き込まれて話が完了してる・・・・

>>303
ものすご端的で明快な回答どうもでした。
なるほど、インスタンス無しで使えるのは便利ですね。
やはりシングルトンにアクセスするために使うのがメインになるのかな?

314 名前:311 :04/05/01 15:03
入力値チェックの方法がわかりません。

315 名前:デフォルトの名無しさん :04/05/01 15:08
>>313
テンプレート関係のコードでは結構使う。
例えば関数テンプレートの部分特殊化の模倣に使える。
ttp://www.tietew.jp/cppll/archive/3819


316 名前:デフォルトの名無しさん :04/05/01 15:09
>>313
>ものすご端的
日本語は正確に書きなさい。




317 名前:デフォルトの名無しさん :04/05/01 15:09
>>314
そこまで面倒見切れない。
どういう入力を期待していて、何を入力エラーにするかも書いてないし。

318 名前:デフォルトの名無しさん :04/05/01 15:18
>317
int型整数を期待してそれ以外と、範囲外をエラーとしたいです。

319 名前:デフォルトの名無しさん :04/05/01 15:29
>>318
宿題スレへ(・∀・)カエレ!


320 名前:デフォルトの名無しさん :04/05/01 15:29
今319が良い事を言った


321 名前:デフォルトの名無しさん :04/05/01 15:42
>>316
うるせーばか!

322 名前:301 :04/05/01 15:45
どうも、勝手に返事をしてくれる方がいるようで。

>>315
いろいろ応用方法があるんですね。
リンク先、目を通してみます。

>>316
てへ

323 名前:315 :04/05/01 15:51
>>322
> どうも、勝手に返事をしてくれる方がいるようで。
質問方法が厨すぎるから皆、煙たがってんだよ
空気嫁


324 名前:デフォルトの名無しさん :04/05/01 16:07
空気嫁

      /,.ァ、\
     ( ノo o ) )
      )ヽ ◎/(.  
    (/.(・)(・)\
    (/| x |\)
      ( ヽノ
       ノ >ノ  ヒタヒタ
  三  しU


325 名前:デフォルトの名無しさん :04/05/01 16:19
空気嫁キタ━━(゚Д゚;)━━( ゚Д)━━(  ゚)━━(   )━━(゚   )━━(Д゚ ;)━━(゚Д゚;)━━!!!


326 名前:デフォルトの名無しさん :04/05/01 17:54
最近C++も始めたんですけど
C経験者ならiostreamよりstdioで実装した方が有利ですかね
あとstringもほとんど使ってないっす

327 名前:デフォルトの名無しさん :04/05/01 18:01
>>326
何に対して有利不利なのか文章からは不明だけど、
別の言語だと思った方が最終的には幸せになれると思うけど?


328 名前:デフォルトの名無しさん :04/05/01 18:03
>>326
C経験者はstdioの方が使いやすいだろうけど、
それじゃいつまでたってもiostream覚えられん罠。
stringは使ったほうがいいと思う。単純ミスのバグ減らせるし

329 名前:デフォルトの名無しさん :04/05/01 18:07
>>328
stringは、変なこだわりさえ持っていなければ使うだろう。C使いからみたらかなり便利。

330 名前:デフォルトの名無しさん :04/05/01 18:10
http://jbbs.shitaraba.com/bbs/read.cgi/computer/5651/1048584601/77-

331 名前:デフォルトの名無しさん :04/05/01 18:29
ま、確かに printf とかの書式付出力は結構便利だと思う。
iostream で使いたければ boost::format 使うよろし。

332 名前:326 :04/05/01 19:05
了解しました

演算子のオーバーロードはなかなか面白いです
実行時のオーバーヘッドとかは気になりますけど

333 名前:デフォルトの名無しさん :04/05/01 19:20
>>332
そう思うならガシガシ逆汗してオーバーヘッドがどんなもんか確認汁。

最近の人間はそれできない人多いから、Cしかできない爺の活躍する
場になるぞ。


334 名前:デフォルトの名無しさん :04/05/01 19:21
> 最近の人間はそれできない人
急いで書いたら修飾がかぶった。ソマソ。


335 名前:デフォルトの名無しさん :04/05/01 19:32
>>333
結論として、Cと比べてルーチン内に
CALL命令が沢山あるということですか

336 名前:デフォルトの名無しさん :04/05/01 19:37
>>335
一般的な傾向としてはそうだね。ctor, dtor呼びが自動で入るわけだし。

ただ、callを出来る限り減らすことはできるし、やりようによっちゃ局所的にでCよりcall
回数を減らすことだってできる↓んだけど、そこまでできる人も解析できる人も僅かという話。

ttp://www.tietew.jp/cppll/archive/4252
ttp://osl.iu.edu/~tveldhui/papers/Template-Metaprograms/meta-art.html



337 名前:デフォルトの名無しさん :04/05/01 19:52
>>336
Cしかできない爺もアレですが・・・

C++はかじったばかりですが、もう既に
C++の汎用的すぎるライブラリは、かなり抵抗あります
あのスマートなコーディングは魅力ですが
テキスト丸写しの簡単なテストプログラムでもiostream使うと
実行ファイルのサイズが凄いですね

338 名前:デフォルトの名無しさん :04/05/01 19:55
iostreamでコードサイズ喰ってるのはやたら高機能なlocale回りとかだった気が。
しかもほとんど使われてないという。

339 名前:デフォルトの名無しさん :04/05/01 20:02
大抵は、出力はそのまま垂れ流すからなあ。

340 名前:デフォルトの名無しさん :04/05/01 20:02
>>337
> C++はかじったばかりですが、もう既に
> C++の汎用的すぎるライブラリは、かなり抵抗あります
俺はゲーム関係なんで、C++でスマートに書きつつ速度も稼がないとならんのだけど、
そういう関係じゃないならその抵抗感はひとまず捨ててしまったほうが良いのでは?


341 名前:デフォルトの名無しさん :04/05/01 21:27
コンストラクタで受け取ったポインタの内容を読み出したり変更したりするクラスを作りたいのですが
可能な場合に極力constを徹底しようとして壁に当たりました。

class A{
private:
char* ptr;
public:
A(char* p):ptr(p){}
void write(){*ptr=1;}
char read()const{return *ptr;}
};

void hoge(const char* foo)
{
char* bar = new char[10];
A normal_A(bar);
const A const_A(foo);
}

ここでnormal_Aは問題ないのですが、const_Aをread()のみ可能なように
成立させるにはどう書くべきでしょうか。
最初の初期化以外はクラスが変更されないことを保証する

A(const char* p):ptr(p)const{}

みたいなコンストラクタが書けるといいのですが。
もっとも、このようなコンストラクタが書けた所でptrがconstではないですけど。

342 名前:341 :04/05/01 21:30
もしかしてtemplateでptrとコンストラクタの引数をconst char*にするのが正解?

343 名前:デフォルトの名無しさん :04/05/01 21:31
>>341
現状でもむりやりなconst_castさえしなければ無問題に思うが?


344 名前:341 :04/05/01 21:41
>>343
即レスサンクス。
341のコードはconst_castしてないです。
そのままコンパイルしようとすると

const A const_A(foo);

の箇所でfooがconst char*なのに対してコンストラクタの宣言がchar*なので
エラーが出るはずです。これを

const A const_A(const_cast<char*>(foo));

と書けばエラーはねじ伏せることが出来ますが、間違えて

A const_A(const_cast<char*>(foo));

と、変数のconstを付け忘れてしまうとfooがconst char*にも関わらずwrite()出来てしまう事が問題になります。

345 名前:デフォルトの名無しさん :04/05/01 21:47
>>344
class A{
private:
char* ptr;
const char* cptr;
public:
A(char* p):ptr(p),cptr(0){}
A(const char* p):ptr(0),cptr(p){}
void write(){*ptr=1;}
char read()const{return (ptr ? *ptr : *cptr);}
};

つーかどういう文脈でこういうことがしたくなるのかわからんけど。


346 名前:デフォルトの名無しさん :04/05/01 22:27
イテレータを自作してて、const_iteratorとiteratorを1つで
済まそうとすると、そういう羽目に陥るのではないかと予想。

347 名前:341 :04/05/01 22:30
>>345
参考になります。
実際は最適化されるので微々たるものでしょうけど
readする度に分岐するのが精神衛生上良くないですね。

> つーかどういう文脈でこういうことがしたくなるのかわからんけど。
こういうことをしないとなるとコピーコンストラクタでしょうけれど
リソースも入り得る場合、リソースは普通コピーしませんよね。
一度読んだらshared_ptrかなにかにして使いまわすと思うのですが。

348 名前:デフォルトの名無しさん :04/05/01 22:39
>>347
なにをしたくてこのクラス書いてるのか教えてよ。


349 名前:デフォルトの名無しさん :04/05/01 22:54
>>348
ビットマップのクラスです。
通常はクラスがshared_ptrを用いてメモリの生成し、自由に中身を書き換えていくわけですが
リソースにも同じクラスを使いまわそうとしています。
また、方針としてクラスをコピーした場合には
ポインタが同じメモリを指すようにしています(そのためのshared_ptrですが)。

そこでリソースは極力constで扱いたいという考えです。

350 名前:デフォルトの名無しさん :04/05/01 23:02
>>349
>リソースにも同じクラスを使いまわそうとしています。
これをやめたほうがいいに1000clock



351 名前:デフォルトの名無しさん :04/05/01 23:34
>>350
もしかしたら全体から見ればリソースの持ち方などの
やっていることは間違っているのかもしれませんが、
狭い範囲で見るとあるポインタを保持するクラスに
constのポインタも渡せるように出来ないか、という話でして解決の糸口が無いものかと。

静的なリソースと動的に作ったものを合成したりするわけですから
constかそうでないかだけの違いでクラスを分けてしまうのも不便ですし。

352 名前:デフォルトの名無しさん :04/05/01 23:38
教えてください。固定小数クラスをでっちあげて、

class FixedPoint {
public:
FixedPoint(int integer, int fractional = 0) : i_(integer), f_(fractional) {}
FixedPoint operator*(const FixedPoint& fp) const {
const int tmp = (i_ * 100 + f_) * (fp.i_ * 100 + fp.f_);
return FixedPoint( tmp / 10000, (tmp % 10000) / 100 );
}
const int i_;
const int f_;
};

こんな感じの計算をすると

FixedPoint f(1, 50); // 1.50
FixedPoint h = f*f*f*f;
return h.i_;

(続く)


353 名前:デフォルトの名無しさん :04/05/01 23:41
(続き)
movl $1, -8(%ebp)
movl $50, -4(%ebp) # <variable>.f_
movl $2, -16(%ebp)
movl $25, -12(%ebp) # <variable>.f_
movl $3, -24(%ebp)
movl $37, -20(%ebp) # <variable>.f_
movl $5, -32(%ebp)
movl $5, -28(%ebp) # <variable>.f_
movl $5, %eax
こういう感じの処理に展開されてしまいます。戻り値の5は
最終行でいきなり得られているんですが、その前の8行が
完全に無駄です。これ取り去る方法というか、取り去られる
ようなコードの書き方ってないでしょうか?

g++の3.3使用です。


354 名前:デフォルトの名無しさん :04/05/01 23:55
>>353
VC6では

mov eax, 5
ret 0

になったけど。

355 名前:デフォルトの名無しさん :04/05/01 23:56
最適化オプションつけてないんじゃないの?

356 名前:デフォルトの名無しさん :04/05/01 23:57
>>354
うーんそうですか。サンスコ。
コンパイラによらずに5のmovだけにする方法ないですかねえ・・
templateとenumとか?(とするとスレ違いか)


357 名前:デフォルトの名無しさん :04/05/01 23:58
>>355
-O2です。-O6でも一緒ですね。
ちなみに最適化しないともっと悲惨なコードになるです。


358 名前:デフォルトの名無しさん :04/05/02 00:00
>>357
-O3にしないとインラインの展開しなかったのでは?

359 名前:デフォルトの名無しさん :04/05/02 00:05
>>358
いや-O3でもだめです。というか、インライン展開はされてるんですよね
call命令はひとつもないし、結果の5がimmで書かれてるから。消去され
るべき余計なコードまで出力されちゃってるってだけで。

4乗ならまだ余計なコード罹れてても許せる範囲ですけど、もっと大きな数
になるとちょっとまずいです。

boost::mpl方面?を調べるべきでしょうか。

360 名前:デフォルトの名無しさん :04/05/02 00:05
ところで、
先頭のタブとか、インデントは &nbsp; 4つに置換しないか。

361 名前:デフォルトの名無しさん :04/05/02 00:07
スマソ

362 名前:デフォルトの名無しさん :04/05/02 00:21
うちのgcc version 3.3.3 (mingw special)だと

FixedPoint f(1, 50); // 1.50
return f.i_;

だけを

g++ -O9 -march=pentium4 -fomit-frame-pointer

で出しても一旦スタックに1.50を積み込んでるぞ。

363 名前:デフォルトの名無しさん :04/05/02 00:43
やはりgccの最適化強度はその程度なのかな。

364 名前:デフォルトの名無しさん :04/05/02 00:46
>>363
VS.NETで試したらインライン展開すらされてないように思うんだけど
なんかコンパイルオプション間違ってるんかな??


365 名前:デフォルトの名無しさん :04/05/02 01:10
>>364
漏れはアセンブラさっぱし分からんけど
↓みたいになる模様。VS 2003

PUBLIC_main
_TEXTSEGMENT
_mainPROC NEAR
moveax, 5
ret0
_mainENDP
_TEXTENDS
END

366 名前:365 :04/05/02 01:12
スマソ。タブが消えてましたな。

PUBLIC_main
_TEXT   SEGMENT
_main   PROC NEAR
   mov   eax, 5
   ret   0
_main   ENDP
_TEXT   ENDS
END


367 名前:364 :04/05/02 01:21
>>366
ありがとう。やはり漏れの勘違いだったみたい。
ちなみにそういうリストってどうやって出すの?


368 名前:デフォルトの名無しさん :04/05/02 01:44
>>367
-S付けると出てこない?

369 名前:デフォルトの名無しさん :04/05/02 01:50
VC++なら/FAsじゃないか?
つーか、2003ならプロジェクトの設定にまんまの項目があるし、
VC++6.0ならリスティングファイルがどうたらって項目。

まあ、マニュアルのコンパイラオプションの項目嫁と。

370 名前:デフォルトの名無しさん :04/05/02 02:03
template<typename T>struct A
{
  char c;

  A(char arg): c(arg){}

  void test()
  {
    cout << c << endl;
  }
};

int main()
{
  A<int> a('1');

  A<string>* p = (A<string>*)(&a);

  p->test();
}
 
のようにクラス内でテンプレート引数を使用しないとして
テンプレート的に違う型のポインタにキャストするのって
動作は保証されてますか?

371 名前:デフォルトの名無しさん :04/05/02 02:04
しかしoperator*の中にcout << "operator * "; と入れてVC7.1の
吐いたコードを見てワロタ。

単に "operator * "を3回出力した後いきなり 5 を出力。コンスト
ラクタもoperator* も思い切り最適化されて影も形もなくなってる。

372 名前:デフォルトの名無しさん :04/05/02 02:07
>>371
3回出力したなら影も形もあるのでわ?


373 名前:デフォルトの名無しさん :04/05/02 02:08
>>370
テンプレート関係はtemplate総合スレで聞いたほうが良いと思われ


374 名前:デフォルトの名無しさん :04/05/02 02:11
>>372
それが、チョト見て下さい(隣国人風)。

FixedPoint f(1, 50); // 1.50
FixedPoint h = f * f * f * f;

00401130 mov ecx,dword ptr [__imp__STL::cout (407230h)]
00401136 push esi
00401137 mov esi,dword ptr [__imp__STL::basic_ostream<char,_STL::char_traits<char> >::_M_put_nowiden (407240h)]
0040113D push offset string "operator * " (405024h)
00401142 call esi
00401144 mov ecx,dword ptr [__imp__STL::cout (407230h)]
0040114A push offset string "operator * " (405024h)
0040114F call esi
00401151 mov ecx,dword ptr [__imp__STL::cout (407230h)]
00401157 push offset string "operator * " (405024h)
0040115C call esi
std::cout << h.i_ << std::endl;
0040115E mov ecx,dword ptr [__imp__STL::cout (407230h)]
00401164 push offset _STL::endl<char,_STL::char_traits<char> > (401019h)
00401169 push 5
0040116B call dword ptr [__imp__STL::basic_ostream<char,_STL::char_traits<char> >::operator<< (407228h)]
00401171 mov ecx,eax
00401173 call dword ptr [__imp__STL::basic_ostream<char,_STL::char_traits<char> >::operator<< (40722Ch)]


375 名前:デフォルトの名無しさん :04/05/02 02:12
>>372
こんな感じで。クラスをバラバラに分解し、計算できる所は
計算してしまって、残った部分だけインラインで並べている感じ。

376 名前:デフォルトの名無しさん :04/05/02 02:13
VSの最適化ってすごいね

377 名前:デフォルトの名無しさん :04/05/02 02:14
>>375
ほんとだ。
すごいな。g++にゃこれは無理だ。



378 名前:370 :04/05/02 02:14
template総合スレで聞いてみることにします

379 名前:デフォルトの名無しさん :04/05/02 02:15
>>376
恐れおののいた。ICCだともっと凄いのかな。
gccでは何とかインライン化するものの、どうしても内部の
計算はそのまま残っていた。

380 名前:デフォルトの名無しさん :04/05/02 02:17
どうでもいいが>>337にも参考になりそうな展開だな・・・
人生の。



381 名前:デフォルトの名無しさん :04/05/02 02:21
>>380
うん。C++のライブラリはできるだけダイナミックリンクにした
方が良さそうだ。
そうなると地鎮祭の「STLを使うと実行ファイルのサイズが
一気に10倍に!?」という言葉もまともに思えてくる。

382 名前:デフォルトの名無しさん :04/05/02 02:28
>>379
icc for Linux ダウソしてみるわ…


383 名前:デフォルトの名無しさん :04/05/02 03:16
>FixedPoint h = f*f*f*f;
この書き方ならスタックに順番につむだろ。
& operator *=
を定義して、
h=f;
h *=f;
以下必要分だけ繰りかえしちゃどうよ?

384 名前:デフォルトの名無しさん :04/05/02 04:26
ヲイヲイ固定小数点程度の計算するのに乗算を再帰的に定義して、
オプティマイザの効率がどうこう言ってんじゃねぇよ。再帰的に
定義してるからスタックに積むんじゃねぇか。お前のおつむは機械以下か?アフォが。


385 名前:デフォルトの名無しさん :04/05/02 04:28
gcc 3.3.X のコードはVC7.1より良質というのが世間の相場だろ?

386 名前:デフォルトの名無しさん :04/05/02 04:29
>>384
どこが再帰的なんだ?w

387 名前:デフォルトの名無しさん :04/05/02 04:33
プw

388 名前:デフォルトの名無しさん :04/05/02 04:36
>>385
ウスターじゃないソースは?


389 名前:デフォルトの名無しさん :04/05/02 05:19
const 指定がよくないよ.
だいたいclass の i_,f_をconst指定してる忌みがよくわからん。
int i_, f_と変えただけで
int main()
{
FixedPoint f(1, 50); // 1.50
FixedPoint h = f*f*f*f;
}



main:
pushl%ebp
xorl%eax, %eax
movl%esp, %ebp
subl$56, %esp
andl$-16, %esp
call__alloca
call___main
movl%ebp, %esp
xorl%eax, %eax
popl%ebp
ret

390 名前:デフォルトの名無しさん :04/05/02 06:15
nanananana hey yeah yeah hey
nanananana ya know a stuck on you !

391 名前:デフォルトの名無しさん :04/05/02 06:54
>>389
これでやってみれ。
class FixedPoint {
public:
FixedPoint(int integer, int fractional = 0) : i_(integer), f_(fractional) {}
FixedPoint operator*(const FixedPoint& fp) {
std::cout << "operator * ";
int tmp = (i_ * 100 + f_) * (fp.i_ * 100 + fp.f_);
return FixedPoint( tmp / 10000, (tmp % 10000) / 100 );
}
FixedPoint& operator*=(const FixedPoint& fp) {
return *this = *this * fp;
}
int i_;
int f_;
};

int main()
{
FixedPoint f(1, 50); // 1.50
FixedPoint hh = f;
hh *= f;
hh *= f;
hh *= f;
std::cout << hh.i_ << std::endl;
}

392 名前:デフォルトの名無しさん :04/05/02 08:52
>>389
おいおい
それ __main の方に本当の処理が入ってんだろ。g++のバージョンと環境は何よ?

すくなくとも漏れの環境ではconstを取り去るとまともに最適化されないようだ



393 名前:デフォルトの名無しさん :04/05/02 08:59
>>391
全然だめポなんだけどg++ -Sするとどうなる?


394 名前:デフォルトの名無しさん :04/05/02 09:25
>>389>>392
わろた

395 名前:デフォルトの名無しさん :04/05/02 09:42
>>393
g++(MinGW3.3.3)の出力。
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1083458467
インライン展開はされているものの、メンバ関数の内容は最適化されて
いない。もっともこのプログラムではVC7.1もあまり最適化は効かなかった。

396 名前:デフォルトの名無しさん :04/05/02 10:04
>>391
変なプログラムだなあ。

397 名前:デフォルトの名無しさん :04/05/02 11:30
>>395
了解。最適化効いてない(コンパイル時計算になってない)わね。



398 名前:デフォルトの名無しさん :04/05/02 11:59
>>395
g++ -S -fverbose-asm hoge.cpp したあと c++filt < hoge.s > hoge_.s で整形したほうが
ベターと思われ。あとこれ最適化何?-O2?


399 名前:デフォルトの名無しさん :04/05/02 16:25
>>398
-O3。gccはだいたいこんなもんだよ。

400 名前:デフォルトの名無しさん :04/05/02 17:05
非MFC環境でDateTimePickerに時間を設定する方法
リソースには貼り付けれるけど、表示時間を自由に変更できません
DateTimePickerクラスが使えないし、でもシステムの時間を書き換えるのは却下で

あとスピンコントロールの使い方も


401 名前:デフォルトの名無しさん :04/05/02 17:06
>>400
何様?氏んだら?

402 名前:デフォルトの名無しさん :04/05/02 17:09
いきなりキレるのは馬鹿丸出しですよ(^^)

まあ、あなたじゃうまく隠して生きるのは無理そうですけど(^^)v

403 名前:デフォルトの名無しさん :04/05/02 17:10
皆さ〜ん。
>>400>>>402は偉く居丈高なので、答える必要はありませんよ〜。
質問の仕方という基本的な事を思い知らせてやりましょう。

404 名前:デフォルトの名無しさん :04/05/02 17:23
>>403
お前みたいなのが邪魔。
>>400
ヘルプに書いてある。

405 名前:デフォルトの名無しさん :04/05/02 17:24
402さんは丸出しですから
隠す必要無いですもんね。

406 名前:デフォルトの名無しさん :04/05/02 17:43
メンバ変数をconst指定する意味は何?

407 名前:デフォルトの名無しさん :04/05/02 17:49
質問の仕方以前にスレ違いだ馬鹿野郎

408 名前:デフォルトの名無しさん :04/05/02 17:49
>>401-403

409 名前:デフォルトの名無しさん :04/05/02 17:51
どういう意味があるのか聞いているのですが。

410 名前:デフォルトの名無しさん :04/05/02 17:52
このスレは猿並の頭の持ち主しかいないから
誰も答えられないんだよ

411 名前:デフォルトの名無しさん :04/05/02 18:02
オマエガナー

412 名前:デフォルトの名無しさん :04/05/02 18:05
406=409で407=408だろ。
よって409の勘違い。

constにするのはメンバだろうが普通の変数だろうが同じでは?
間違えて書き換えたくない場合や変更してはいけないことを他人に明示したい場合じゃないの?

413 名前:デフォルトの名無しさん :04/05/02 18:09
>412
×他人に
○コンパイラに


414 名前:デフォルトの名無しさん :04/05/02 18:49
>>400ですが・・・確かに高圧的に読めますね
荒らしてしまって申し訳ありませんでした

>>404
ありがとうございます
もうちょい調べてみます

415 名前:406 :04/05/02 19:17
>>412 407は別人だよ。

なるほど、コンストラクタでの初期化だけは許可されのね。
でもgccではこのconst指定をはずすとまともなコードはきますよ。

416 名前:デフォルトの名無しさん :04/05/02 19:20
そんなにgccをようごしなくても

417 名前:デフォルトの名無しさん :04/05/02 19:28
>>414
というか、そもそもスレ違いなので、APIスレで聞いたら?

418 名前:デフォルトの名無しさん :04/05/02 21:26
>>4007>>402

なんだこのやろう!!!!!!!

419 名前:デフォルトの名無しさん :04/05/02 21:27
>>400>>402
死ねば?

420 名前:デフォルトの名無しさん :04/05/02 21:28
400 デフォルトの名無しさん 04/05/02 17:05
非MFC環境でDateTimePickerに時間を設定する方法
リソースには貼り付けれるけど、表示時間を自由に変更できません
DateTimePickerクラスが使えないし、でもシステムの時間を書き換えるのは却下で

あとスピンコントロールの使い方も


421 名前:デフォルトの名無しさん :04/05/02 21:28
蒸し返すなよ…

422 名前:デフォルトの名無しさん :04/05/02 21:28
402 デフォルトの名無しさん sage 04/05/02 17:09
いきなりキレるのは馬鹿丸出しですよ(^^)

まあ、あなたじゃうまく隠して生きるのは無理そうですけど(^^)v

402 デフォルトの名無しさん sage 04/05/02 17:09
いきなりキレるのは馬鹿丸出しですよ(^^)

まあ、あなたじゃうまく隠して生きるのは無理そうですけど(^^)v

402 デフォルトの名無しさん sage 04/05/02 17:09
いきなりキレるのは馬鹿丸出しですよ(^^)

まあ、あなたじゃうまく隠して生きるのは無理そうですけど(^^)v

402 デフォルトの名無しさん sage 04/05/02 17:09
いきなりキレるのは馬鹿丸出しですよ(^^)

まあ、あなたじゃうまく隠して生きるのは無理そうですけど(^^)v


423 名前:デフォルトの名無しさん :04/05/02 21:30
初心者を餌食にするのって傍から見ててもムカつくんだよね

424 名前:デフォルトの名無しさん :04/05/02 21:47
突然ですが。
いま「プログラミング言語C++第3版」読んでるんですけど、
§13.2(pp. 386)に書いてある
"文字列の定義は、文字をコピーをできるといったごくわずかの内容から構成されている"
ってどういう意味なんでしょう。

425 名前:デフォルトの名無しさん :04/05/02 21:59
>>424
The definition of a string relies on the fact that acharacter can be copied, and littele else.
のこと?コピーできるとかの条件をみたすならそれはstringの要素になりうる、っていう話の
まえふりじゃないの?

426 名前:デフォルトの名無しさん :04/05/02 22:05
>>415
> でもgccではこのconst指定をはずすとまともなコードはきますよ。
だから、 誤解だって。


427 名前:デフォルトの名無しさん :04/05/02 22:30
>>426
だから誤解じゃないよ。-Sつけて確認してみろ。

428 名前:デフォルトの名無しさん :04/05/02 22:35
>>427
> だから誤解じゃないよ。-Sつけて確認してみろ。
>>395見ろ低能。


429 名前:デフォルトの名無しさん :04/05/02 22:39
>>427
389は嘘だよ?


430 名前:デフォルトの名無しさん :04/05/02 22:47
>>428
糞かお前は。メンバ変数のconst削除した場合。
FixedPoint h = f*f*f*f;
がどう展開されるかは、とっくに>>389に示されてるんだよ。
>>353の何回もpush繰り返すコードとは明らかに違うだろうが。
アセンブラも読めない知障は死ねよ。

431 名前:428 :04/05/02 22:58
>>430
ったく・・・・・・。
mainにreturn文がないから0を返却してる。
最適化でfとhは綺麗さっぱり消えている。
だからなにもしてないように見えるだけ。

アセンブラ読めないのは お・ま・え☆
ったく糞が。



432 名前:デフォルトの名無しさん :04/05/02 23:00
>>430
ワロタ

433 名前:デフォルトの名無しさん :04/05/02 23:01
242 名前:名無しさん@恐縮です :04/05/02 22:55 ID:7ffryccT
ここまでのネタ職人の仕事ぶりのまとめ

http://cgi28.plala.or.jp/ll/lll/img20040502212012.jpg#pc5.2ch.net(元画像)
http://ahiru.zive.net/joyful/img/1095.mpg#pc5.2ch.net(元動画)

http://fetish-onsen.com/cgi/upload/source3/No_2179.jpg#pc5.2ch.net(一塁が観客席側に移動)
http://up.nm78.com/data/up004929.jpg#pc5.2ch.net(一塁が本塁側に・・・)
http://fetish-onsen.com/cgi/upload/source3/No_2181.jpg#pc5.2ch.net(一塁手が観客席側に・・・)
http://up.nm78.com/data/up004948.jpg#pc5.2ch.net(神隠し・・・)
http://sumire.sakura.ne.jp/~hatomune/cgi-bin/imgboard/img-box/img20040502214930.jpg#pc5.2ch.net(一塁が分裂して・・・)
http://a.jmpd.com/upload/show_img.php?pid=946-A&db=hige1128&type=2(飛脚・・・)
http://fetish-onsen.com/cgi/upload/source3/No_2183.jpg#pc5.2ch.net(一塁がジャンパイアの手元・・・)
http://sumire.sakura.ne.jp/~hatomune/cgi-bin/imgboard/img-box/img20040502224028.jpg#pc5.2ch.net(ファミコンで再現・・・)

http://www.chugoku-np.co.jp/Carp/2003/Cs03060501.html(関連ニュース)

434 名前:デフォルトの名無しさん :04/05/02 23:03
まさしく

「環境によるだろ」

みたいなw

435 名前:デフォルトの名無しさん :04/05/02 23:04
まぁg++3を仮定しての話ってことで。
VC++は最強すぎるし。


436 名前:デフォルトの名無しさん :04/05/02 23:16
それを認められない人がいるわけで

437 名前:デフォルトの名無しさん :04/05/02 23:18
430は引き篭もったのか?


438 名前:デフォルトの名無しさん :04/05/02 23:37
春だねえ…

439 名前:424 :04/05/02 23:50
>>425
サンクスです。
よく分かりました。

私が読んでるのは訳書なんです。
日本語がひどいです。
誤)2つの補い合う16ビット整数でintを表現するマシンでは
正)16ビットの2の補数でintを表現するマシンでは
とか...

440 名前:デフォルトの名無しさん :04/05/02 23:52
http://www.nminoru.jp/~nminoru/programming/x86-cc.html#benchmark
icc が最強 > gcc3 >= MVC
ってところだな。

441 名前:デフォルトの名無しさん :04/05/02 23:57
>>439
何頁?

442 名前:デフォルトの名無しさん :04/05/03 00:05
>The definition of a string relies on the fact that acharacter can be copied, and littele else.

string の定義はコピーできるってこととほんのわずかのほかのことに依存している。

443 名前:デフォルトの名無しさん :04/05/03 00:10
little はもうちょっと否定的につかった方がいいかな?
意味はコピーできることが一番大事で、それ以外のことはささいなこと
っていうことじゃないの?

444 名前:デフォルトの名無しさん :04/05/03 00:40
>>443
> little はもうちょっと否定的につかった方がいいかな?
もっと否定的で「ほとんど〜ない」っつーぐらいに訳すのが一般的。

 string の定義は、ほぼ (sting を構成する要素である) 文字が複製可能であるという
 事実のみに依存している。

445 名前:439 :04/05/03 00:47
>>441
108ページです。

↓は正誤表のURL(訳者のWebページ)です。
ttp://www.longtail.co.jp/errata/

446 名前:デフォルトの名無しさん :04/05/03 00:52
>事実のみに依存している。
こういう訳語に相当するのはonlyだよ。and little else を無視してるな。

447 名前:デフォルトの名無しさん :04/05/03 00:53
「ほぼ」って書いてる

448 名前:デフォルトの名無しさん :04/05/03 00:55
「ぼぼ」に見えた。

449 名前:デフォルトの名無しさん :04/05/03 00:58
まんこ。

450 名前:デフォルトの名無しさん :04/05/03 00:59
英語以前に
ほぼ文字
こういう形容の仕方より
ほぼ依存している
とするのがbetterだろ?

451 名前:デフォルトの名無しさん :04/05/03 00:59
べっちょ


452 名前:デフォルトの名無しさん :04/05/03 01:05
>>445
昔そこをみたとき掲示板に痛い書き込みがあったなーと思いながら
いってみたらまだあった

453 名前:デフォルトの名無しさん :04/05/03 01:07
>>452
どれさ


454 名前:デフォルトの名無しさん :04/05/03 01:17
>>453
非終端子

455 名前:デフォルトの名無しさん :04/05/03 04:17
>>430
> >>428
> 糞かお前は。メンバ変数のconst削除した場合。
> FixedPoint h = f*f*f*f;
> がどう展開されるかは、とっくに>>389に示されてるんだよ。
> >>353の何回もpush繰り返すコードとは明らかに違うだろうが。
> アセンブラも読めない知障は死ねよ。


>>431
> >>430
> ったく・・・・・・。
> mainにreturn文がないから0を返却してる。
> 最適化でfとhは綺麗さっぱり消えている。
> だからなにもしてないように見えるだけ。
> アセンブラ読めないのは お・ま・え☆
> ったく糞が。


456 名前:デフォルトの名無しさん :04/05/03 07:26
gcc厨が暴れているスレはここですか?

457 名前:山本五十六 :04/05/03 10:22
いい加減目を覚ませ…
C++は時代遅れなんだ、と

458 名前:デフォルトの名無しさん :04/05/03 11:11
>>457
では逆に聞くが、時代に沿った言語とは?
まさかC#なんて言うなよ。

459 名前:デフォルトの名無しさん :04/05/03 11:11
>>457
それからD言語というのも無しだ。

460 名前:デフォルトの名無しさん :04/05/03 11:12
マジレス(・∀・)カコイイ

461 名前:デフォルトの名無しさん :04/05/03 11:26
>>458
C#は時代に沿ってないの?
つまり、Windowsがなくなると思ってるってことになるけど
君は本気でそう思っているわけ?

462 名前:デフォルトの名無しさん :04/05/03 11:31
>>461
そうは言ってない。WinFX APIを備えたLongHornが主流になれば
最先端だと言えるかもしれないが、今の段階では糞重たくてC++
より遅くて効率が悪い言語としか言えない。

そういう俺も仕事で無理矢理C#をちまちま触っているが、まだ
まだだねえ。この言語。次のバージョンに期待しよう。

463 名前:デフォルトの名無しさん :04/05/03 11:40
双方うざい
〓〓〓〓〓〓〓〓〓〓 終了 〓〓〓〓〓〓〓〓〓〓 

464 名前:デフォルトの名無しさん :04/05/03 15:19
チッ!Winのプログラマやってる能無しかい?

465 名前:デフォルトの名無しさん :04/05/03 15:28
↑チッ!Winのプログラマもできない能無しかい?

466 名前:デフォルトの名無しさん :04/05/03 16:13
Winのプログラマのほうが勝ち組。だってWinだから。

467 名前:デフォルトの名無しさん :04/05/03 16:41
PCFX最強

468 名前:デフォルトの名無しさん :04/05/03 16:57
>>465
プログラマやってること自体恥じろ!タクシー運転手と同じ人生の掃溜め職業ってことを自覚しろ!

469 名前:デフォルトの名無しさん :04/05/03 17:12
>>379
> >>376
> 恐れおののいた。ICCだともっと凄いのかな。
iccでやってみたけど、VC++と同様の結果だった。まぁさすがという漢字かな。


470 名前:デフォルトの名無しさん :04/05/03 17:28
>>468
タクシー運転手に失礼

471 名前:デフォルトの名無しさん :04/05/03 17:42
class A { int a1; char a2[10]; };
class B { int b1; char b2[10]; };
class C {int c1; char c2[10]; }; (実際には同じパターンとは限らないですが。)

class All {
A a;
B b;
C c;

void init();
}

とかやって、init()に渡す引数の型によって、その型に応じてclass Allの
特定のメンバの初期化をしたいのですが、一つには、各引数を取った
時のinit()メソッドを各々書けばいいのですが、メンバの数が多くなった時
にずらーっとinit()が並んでしまうので、もっとスマートにかけないでしょうか?


472 名前:デフォルトの名無しさん :04/05/03 17:43
すみません。void init()は、publicでつ。


473 名前:デフォルトの名無しさん :04/05/03 17:46
>>471
ABCに共通のスーパークラスを作って、そのクラスでvectorに放り込んでおくとかは?
初期化はループの中で順次にやる。

474 名前:473 :04/05/03 17:51
勘違いしたかも。

引数をフラグにして、どのメンバを初期化するか選択するということ?
もしそうなら、テーブルかな・・・。

475 名前:デフォルトの名無しさん :04/05/03 17:56
どういうことがしたいんだかわからん

476 名前:デフォルトの名無しさん :04/05/03 17:56
A, B, Cそれぞれにinit()を持たせる。

477 名前:473 :04/05/03 17:59
情報が足りないね。
どういう風に書いたら、冗長になるのか提示してみそ。

478 名前:471 :04/05/03 18:00
>>474
>>475

例えば、main で

All database;

A default;
default.a1 = 0;
memset(a2,0,sizeof(a2));
とかやって、

database.init(&default);

とやると、Allクラスのdatabaseインスタンスのメンバー a の部分が指定した値で初期化されるという
感じです。


479 名前:デフォルトの名無しさん :04/05/03 18:02
>>478
残りのフィールドは大量にメンバとしてあるけど初期化しないわけ?

480 名前:デフォルトの名無しさん :04/05/03 18:04
>>478
memset萎えー


481 名前:デフォルトの名無しさん :04/05/03 18:04
オーバーロードしかない

482 名前:471 :04/05/03 18:06
>>479
別途コンストラクタで全体の初期化はしますが、databaseの更新途中で、
特定のメンバーだけデフォルト値に戻したいんですが。

>>476
むむ、なるほろ

>>480
memsetじゃ駄目なんでしょうか?

483 名前:デフォルトの名無しさん :04/05/03 18:06
ABCとも、ぜんぶそれぞれのコンストラクタで0クリアしておいて、
All::init()で特定のメンバにデータをセットする、っていう仕様じゃだめなのか?

484 名前:デフォルトの名無しさん :04/05/03 18:08
>>482
それなら、ABCそれぞれにデフォルト値を別途持たせておいて、
A::setDefault() で、デフォルト値に戻すとかは?

485 名前:デフォルトの名無しさん :04/05/03 18:08
typelistを使ったtupleで

486 名前:471 :04/05/03 18:10
>>476
>>484
そうですね、これが一番いいかも。


487 名前:デフォルトの名無しさん :04/05/03 20:02
>>468
誰もが知ってる電気メーカに勤めてるが、確かにそれ言えてるな。ソフト担当させるのは電気系以外の専攻者か
電気系なら学卒者、ただ、後者の場合は将来のソフト部門の責任者として育成するけど。それ以外はキーマンとして
は期待できないから兵隊としてソフト担当にアサインする。

488 名前:デフォルトの名無しさん :04/05/03 20:06
487の要約
> 誰もが知ってる電気メーカに勤めてる


489 名前:デフォルトの名無しさん :04/05/03 21:11
作ったのを実行しようとしても、.exeファイルが見つかんないとか言われて
出来ないんですけど、どうしたれいいんですか?

490 名前:デフォルトの名無しさん :04/05/03 21:13
なんだ、>>487もプログラマか。( ´,_ゝ`)プッ

491 名前:デフォルトの名無しさん :04/05/03 21:15
それと、あんたの言うキーマンって何?ピーマンの変種か?

492 名前:デフォルトの名無しさん :04/05/03 21:16
>>489
> 出来ないんですけど、どうしたれいいんですか?
タレ(・∀ (ry



493 名前:デフォルトの名無しさん :04/05/03 21:17
プログラマ:奴隷
管理職:奴隷の雑用係

技術者なんてそんなもん

494 名前:デフォルトの名無しさん :04/05/03 21:20
489に誰か答えてください


495 名前:デフォルトの名無しさん :04/05/03 21:21
こうしたれ

496 名前:デフォルトの名無しさん :04/05/03 21:23
>>494
自分が何をしたかスクリーンショットを交えてどこかにウプしろ。
それから、ソープに逝って女を2-3人抱いて来い。
話はそれからだ。


497 名前:デフォルトの名無しさん :04/05/03 21:25
まぁプルグルマが自身を奴隷だと認識していない職場も結構あるけどな。いい給料もらってたりもする。
そういうのはプロセスが存在しない職場ともいう。

どちらが幸せかは謎。そういう職場は往々にしてデスマ(ry


498 名前:489 :04/05/03 21:26
誰か教えて

499 名前:デフォルトの名無しさん :04/05/03 21:27
>>498
氏ね


500 名前:デフォルトの名無しさん :04/05/03 21:28
500


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.