■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
C++相談室 part55
501
名前:
デフォルトの名無しさん
:2007/01/01(月) 16:09:20
外部関数じゃ何か不満?
502
名前:
487
:2007/01/01(月) 16:31:54
>>501
関数だと
=func1(func2(func1(func1(str1))+func1(str2)));
こんな使い方をされる物を想定しているわけですよ
これを単純に左から右へ処理される順番に並べて読みやすくできないかという思惑です
503
名前:
デフォルトの名無しさん
:2007/01/01(月) 19:03:23
>>502
もっと具体的な最終目的をちゃんと書いてくれると
それが最適なやり方かどうかも含めて議論できるんだが
504
名前:
デフォルトの名無しさん
:2007/01/01(月) 19:14:50
Win32APIのプログラムを練習していますCで書かれたプログラムで_stprintfというのが
あるのですが、C++でコンパイルすると未定義の関数と表示されてしまいます(CならOK)
C++で_stprintfに対応する関数は何になるのでしょうか教えてください。
コンパイラはbcc32です。
505
名前:
487
:2007/01/01(月) 20:06:50
>>503
ファイルのパスを管理したい。
↓
フルパスからファイルの親の親ディレクトリ部分のみを取り出したり
パスなしのファイル名から拡張子部分のみを取り替えたりとかしたい
↓
下手にパスを分解してクラスのメンバに入れたりとかするより、
stringそのままを切り貼りした方が扱いやすいんじゃないか
↓
切り貼りの貼りは+でいいとして
切りの部分はstringにメソッドを追加したいなー
↓
せめてメソッドっぽく見えればなー
こんな感じです
506
名前:
デフォルトの名無しさん
:2007/01/01(月) 20:31:59
boost::filesystem
507
名前:
デフォルトの名無しさん
:2007/01/01(月) 20:47:47
>>504
_stprintfはsprintfのtchar版
これでわからないなら最初にsprintfについて調べて動作を理解してから自分のコード読み直してみるといい。
508
名前:
!dama !omikuji
株価【35】
:2007/01/02(火) 10:15:15
>>500
->*演算子は関数呼出の()演算子よりも優先順位が低いからどうしようもない。
>>501
そういうことなら、Oven Range Libraryなんてどうだろう。
ttp://p-stade.sourceforge.net/oven/
こいつは|演算子でパイプ処理のように書くことができるライブラリ。そしてstd::stringに限らず幅広いオブジェクトを対象にしている。
これを使わないとしても、|演算子で並べていくというアイデアは参考になると思う。
と、思ったんだけど、505なら506の言うとおりBoost.Filesystemを推すなあ。
>>504
<tchar.h>をインクルードしているか。
509
名前:
デフォルトの名無しさん
:2007/01/02(火) 19:17:39
>>489
>std::stringを継承するのは大変そうなのでやりたくない
http://tricklib.com/cxx/dagger/xstring.h
こいつでもベースに使えば楽だよ。
510
名前:
デフォルトの名無しさん
:2007/01/04(木) 11:03:36
>>487
ライブラリとして使うつもりなら、
メンバ関数でなければいけない特別な理由がない限り、
メンバ関数にするのはやめたほうがいい。
(C++ Coding Standards 項目44)
名前が長いなら、参照を使えばいいわけで、メンバにする理由もないし。
template< typename StrT > inline StrT & remove_filespec( StrT & in ) {
in.substr( ... ).swap(in);
return in;
}
string & ref = remove_filespec( my_application_filepath );
511
名前:
デフォルトの名無しさん
:2007/01/04(木) 11:14:59
>>510
>>502
512
名前:
デフォルトの名無しさん
:2007/01/04(木) 11:44:46
>>511
行分けちゃアカンの?
513
名前:
デフォルトの名無しさん
:2007/01/04(木) 16:12:38
C++のコードでstdio.hを使うと何か問題発生する?
514
名前:
デフォルトの名無しさん
:2007/01/04(木) 16:42:44
NULLの代わりに0を使わないと、代入でエラーが出る事が
あるんじゃなかったっけ。
515
名前:
487
:2007/01/04(木) 23:51:25
>>510
まぁ、邪道なのは百も承知しているのですが、
それでも
「本当のスパゲティコードを書いたことがなければ構造化のありがたみは解らない」
という自説の延長線上で
「意外に便利なものが見つかったらめっけもの」
という勢いですので、生暖かい目で見守ってやってください。
516
名前:
デフォルトの名無しさん
:2007/01/05(金) 00:09:45
>>514
そうならないようC++のNULLは0と定義されている。
517
名前:
デフォルトの名無しさん
:2007/01/05(金) 12:05:47
ぬるぽ
518
名前:
デフォルトの名無しさん
:2007/01/05(金) 15:25:19
ガッ
519
名前:
デフォルトの名無しさん
:2007/01/05(金) 15:38:50
throw;
520
名前:
デフォルトの名無しさん
:2007/01/09(火) 18:10:41
でもNULLの代わりに0使っちゃダメだぜーフハハハ。
521
名前:
デフォルトの名無しさん
:2007/01/09(火) 22:47:29
ADLには弊害があるそうなんですが、
どういう時によろしくない挙動を示すんでしょうか
522
名前:
デフォルトの名無しさん
:2007/01/10(水) 00:34:13
ISDNと干渉する
523
名前:
デフォルトの名無しさん
:2007/01/10(水) 21:03:13
ADSLかよwwww
524
名前:
デフォルトの名無しさん
:2007/01/10(水) 22:02:34
Yahoo!BBはピンポン方式を一切考慮してなかったからISDNの干渉がひどかった。
525
名前:
デフォルトの名無しさん
:2007/01/10(水) 22:47:36
>521
これなんてどうだろう?
http://en.wikipedia.org/wiki/Argument_dependent_name_lookup#Criticism
526
名前:
デフォルトの名無しさん
:2007/01/10(水) 23:19:22
C++は奥が深いな
527
名前:
デフォルトの名無しさん
:2007/01/10(水) 23:20:31
【ネガティブ派遣根性チェック】
3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。
□派遣先の社員の意見にはたとえ間違っていても反対しない
□派遣先から「いつまでもここで仕事してくださいね」と言われるようになりたい
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣/受託の差異を指摘する人間はムカつく
□派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□派遣先社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ
□今のプロジェクトが終わっても同じ派遣先に常駐したい
528
名前:
デフォルトの名無しさん
:2007/01/11(木) 21:17:37
C++用のライブラリで、perlにおけるbioPerlのような分子生物学用ライブラリは
ないでしょうか?コドンからアミノ酸変換、疎水性インデックスのような簡単な
ものでいいのですが。
529
名前:
デフォルトの名無しさん
:2007/01/11(木) 21:47:16
開発環境が整わない。
もうマジうぜー、javaの100倍うぜえわ
コンパイルの仕方がわからん。リンクくらい貼っとけ
530
名前:
デフォルトの名無しさん
:2007/01/11(木) 21:50:44
低脳
531
名前:
デフォルトの名無しさん
:2007/01/11(木) 23:16:09
>>529
開発環境とかはスレ違いだから
532
名前:
デフォルトの名無しさん
:2007/01/12(金) 05:02:42
>>453
遅レスだが.
> rdbuf()を使ってstd::stringstreamに読み込もうとしたら、fstreamとは
> 違ってコンストラクタがないんですね。
ふつーに
std::stringstream ss;
ss << std::cin.rdbuf();
とかできんか?
533
名前:
デフォルトの名無しさん
:2007/01/12(金) 15:12:11
>>528
boost ML にbio infomatics のやつは投稿されてたけど
534
名前:
デフォルトの名無しさん
:2007/01/12(金) 17:15:40
>>532
std::istringstreamではなくてstd::stringstreamを使って
入出力両用にすればそれはできますね。
535
名前:
デフォルトの名無しさん
:2007/01/13(土) 10:46:50
g++ 4.0.1 で↓がスルっと動くのは、仕様どおりで安全ってことですか?
std::string s("abc");
s = s.substr(3);
assert(s == "");
536
名前:
デフォルトの名無しさん
:2007/01/13(土) 13:24:24
substr(size_type pos = 0, size_type n = npos) const;
は、もしpos > size()ならout_of_rangeを投げるはず・・・。
537
名前:
デフォルトの名無しさん
:2007/01/13(土) 13:25:32
endからendまでをコピーできるからいいんじゃないの
538
名前:
デフォルトの名無しさん
:2007/01/13(土) 15:27:48
>もしpos > size()ならout_of_rangeを投げるはず・・・。
pos == sizeだから問題ないね。
539
名前:
デフォルトの名無しさん
:2007/01/13(土) 15:36:56
お pos >= size()のときじゃないのか... > out_of_range
540
名前:
デフォルトの名無しさん
:2007/01/13(土) 16:04:58
21.3.6.7
2 Throws: out_of_range if pos > size().
って書いてあるな。
541
名前:
535
:2007/01/13(土) 16:19:14
>>536-540
ありがとうございます。安心して使えます。
542
名前:
デフォルトの名無しさん
:2007/01/14(日) 02:06:46
http://www.open-std.org/jtc1/sc22/wg21/
News 2007-01-13: The C++ Standard Library Issues List (Revision 46) is available
543
名前:
デフォルトの名無しさん
:2007/01/14(日) 22:33:24
クラスの、privateな変数でも、外から読み書きができちゃうことはあるんですか?
例えばこんな感じで
class Hoge {
private:
int num;
} hoge;
main() {
int *i = reinterpret_cast<int *>(&hoge);
*i = 123;
}
544
名前:
デフォルトの名無しさん
:2007/01/14(日) 22:37:48
そりゃー無理やりやれば、書き換えられるだろ。
545
名前:
デフォルトの名無しさん
:2007/01/14(日) 22:40:00
鼻から悪魔が出てくる〜
546
名前:
デフォルトの名無しさん
:2007/01/14(日) 23:35:45
#define private public
547
名前:
デフォルトの名無しさん
:2007/01/14(日) 23:42:51
>543
そこまでして自分の足を撃たなくても……
reinterpret_castは実装依存だよ。
548
名前:
デフォルトの名無しさん
:2007/01/15(月) 00:34:26
#define class struct
549
名前:
デフォルトの名無しさん
:2007/01/15(月) 00:36:42
>>548
こうすれば確かにいちいち
#define private public
とかしなくてもOKだよな。目からウロコだぜ
550
名前:
デフォルトの名無しさん
:2007/01/15(月) 00:41:05
デフォルトのアクセス指定が変わるだけで、
>>543
には無意味。
もっとも、キーワードを置き換えてる時点で鼻からスパゲッティだが
551
名前:
デフォルトの名無しさん
:2007/01/15(月) 10:33:15
VC上で、他のプロジェクトでも使いまわせるような
API的関数(それぞれが無関係な関数)を何個か作ってるんですけど、
こういうのって、やはり「API的関数群」のような名前のクラスを作って、
すべてをstaticなメンバ関数にするべきなのでしょうか?
それとも、Cのようなグローバル関数群にしてしまうべきなのでしょうか?
552
名前:
デフォルトの名無しさん
:2007/01/15(月) 10:39:40
>>551
namespace使うとか
553
名前:
デフォルトの名無しさん
:2007/01/15(月) 10:51:19
>>551
まずAPIの意味調べような?
漏れは便利系メソッドは全部namespace utilityに突っ込んでる。
しかしほとんどの便利系メソッドはよく探せばWin32APIとか
使えるならboostとかにほとんど揃ってるんで
utility名前空間が膨れ上がる事はまずない。
554
名前:
デフォルトの名無しさん
:2007/01/15(月) 11:07:33
>>552-553
即レスありがとうございます。
namespaceを使うということは、基本的には
「staticメンバ関数クラス」ではなく「グローバル関数群」のほうになるのですよね。
555
名前:
デフォルトの名無しさん
:2007/01/15(月) 11:20:04
GNUリンカが「Undefined Symbols」になっているもので
__Z11とか__M11とかが頭にあるものが出てくるのですが、
これはどんな種類のシンボルなのですか。
556
名前:
デフォルトの名無しさん
:2007/01/15(月) 11:23:01
デバッグのやり方教えてクレー
ソースを一行ずつ動くようなやつ
visual c++ とかボーランドで出来る?
557
名前:
デフォルトの名無しさん
:2007/01/15(月) 11:35:48
>>556
普通にできるから。
558
名前:
デフォルトの名無しさん
:2007/01/15(月) 11:46:08
>>557
教えてクレー
559
名前:
デフォルトの名無しさん
:2007/01/15(月) 12:12:31
スレ違い
560
名前:
デフォルトの名無しさん
:2007/01/15(月) 14:43:14
>>555
つ[c++filt]
561
名前:
デフォルトの名無しさん
:2007/01/15(月) 16:46:24
>>555
っデマングル
っextern "C"
562
名前:
デフォルトの名無しさん
:2007/01/15(月) 21:14:34
よく鼻からうんことか言ってる人がいますが、
なんか意味があるのでしょうか?
563
名前:
デフォルトの名無しさん
:2007/01/15(月) 21:23:21
ウンコの力
564
名前:
デフォルトの名無しさん
:2007/01/15(月) 21:39:48
>>554
まず名前空間の意味調べような?
>基本的には「staticメンバ関数クラス」ではなく「グローバル関数群」のほう
意味わからん。基本的って何や。基本でない場合どうなるんや。
しいて言うなら「utility関数群」。グローバル名前空間は汚染されない。
565
名前:
デフォルトの名無しさん
:2007/01/15(月) 21:40:10
>554
・classは閉じていてnamespaceは開いている
・classはアクセス制御できる
という違いがあるから、そこを良く考えて選ぶと良いよ。
566
名前:
デフォルトの名無しさん
:2007/01/16(火) 18:55:44
ちょっと教えてほしいのですが、数値計算の結果をfor構文の中でファイルに記述するようにしているのですが
なんとなく実行速度が遅いような気がして、小耳に挟んだ話だと逐一HDDにアクセスしていることが起因しているそうなのですが、
計算結果を貯めておいて、最後に一度に書き出すにはどうすればいいのでしょうか?
C++暦は1ヶ月程度ですが、参考サイト等教えていただければ幸いです。
どうかよろしくお願いいたします。
567
名前:
デフォルトの名無しさん
:2007/01/16(火) 18:57:51
>>566
とりあえずファイルにどう出力しているか書いて。
568
名前:
デフォルトの名無しさん
:2007/01/16(火) 19:39:41
最近はOSのライトバックキャッシュに埋まるんでないの?
569
名前:
デフォルトの名無しさん
:2007/01/16(火) 20:00:02
>>566
std::ostreamやらstdioやらを使ってるんならライブラリでバッファリングされるし
それでなくとも今時のOSならOSレベルでバッファリングされる
実際に逐一ディスクI/Oが発生することは無いはずよ
570
名前:
デフォルトの名無しさん
:2007/01/16(火) 20:08:40
>567
int _tmain(){
ofstream fout("data1.txt");
for(int c=0 ; c<100 ; c++){
fout<<c<<"回目です。"<<endl;}
fout.close();}
のような感じです。見やすさを考慮して実際の数値計算式は省いています。
>568
OSはXPProです。申し訳ありません、私にはわかりません。
>569
なるほど。だとすると私程度のレベルでは特に意識する必要はなさそうですね。
レスありがとうございます。
571
名前:
デフォルトの名無しさん
:2007/01/16(火) 20:09:36
#include "stdafx.h"
#include <math.h>
#include <stdio.h>
#include <fstream>
#include <iostream>
#include <complex>
#using <mscorlib.dll>
using namespace System;
using namespace std;
書き忘れました。すいません。
572
名前:
デフォルトの名無しさん
:2007/01/16(火) 20:15:31
endlは'\n'とかにすると多少変わるかもね
573
名前:
デフォルトの名無しさん
:2007/01/16(火) 20:15:42
>>570
必要がなければcloseなんて自分で呼ぶ必要はないぞ。
デストラクタで勝手にcloseされる。
574
名前:
デフォルトの名無しさん
:2007/01/16(火) 20:40:46
>572
早速試してみます。
>573
それは初耳でした。以降そのように記述します。
アドバイスありがとう。
575
名前:
デフォルトの名無しさん
:2007/01/16(火) 20:44:19
endlってファイルストリームでもフラッシュするんだっけか
だとしたら'\n'に変えて動作速くなる可能性は高そう
576
名前:
デフォルトの名無しさん
:2007/01/16(火) 21:02:29
>>571
どーでもいいがなんだってmscorlib.dllなんて使ってるんだ
managed C++か?
そのコードなら別に.NET非依存で完全にnativeだから、そんなものは要らないぞ
577
名前:
デフォルトの名無しさん
:2007/01/16(火) 21:15:54
endlを'\n'に変更してみましたが私の環境において短時間の計算では優位な差は確認できませんでした。
次は長時間の計算で比較してみたいと思います。
>576
C++の基本事項を参考にしたサイトが使用していたため、そのままコピペで使っていました。
省略しても問題なく動き、コンパイル時間が短縮できました。ありがとうございます。
578
名前:
デフォルトの名無しさん
:2007/01/16(火) 21:23:45
逐次出力の処理速度とか細かいことはあまり気にしないほうがええで。
始めたばかりならC++の言語仕様やその他にも学ぶべき有意義なことが沢山あるはず。
579
名前:
デフォルトの名無しさん
:2007/01/16(火) 21:35:04
>>566
そもそもファイルに書き込まないと速くなるのかね?
君のへちょい数値計算が遅い可能性は皆無?
580
名前:
デフォルトの名無しさん
:2007/01/16(火) 21:49:56
>578
そうですね。仰るとおりです。一通り扱えるよう勉強します。
>579
すいませんが、わかりません。
もちろん私の書いたものが遅い可能性もあります。
みなさんありがとうございました。これほど親身になってアドバイスいただけるとは思っても見ませんでした。
私の知識不足もあり、質問には答えられないところもありましたがどうか容赦下さい。
当面は幅広くC++を学んでいきたいと思います。また機会がありましたらよろしくお願いいたします。
581
名前:
デフォルトの名無しさん
:2007/01/16(火) 21:57:33
そもそもiostreamが重いという話がある。
582
名前:
デフォルトの名無しさん
:2007/01/16(火) 21:59:31
まぁ、性能を云々するんなら、脳内だけで想像せずに
プロファイルを取るべきだな
583
名前:
デフォルトの名無しさん
:2007/01/16(火) 22:26:27
初めて1ヶ月ぐらいならば、
まだ他に学ぶべきことがいっぱいあるだろうから気にすることも無いと思うけどね。
584
名前:
デフォルトの名無しさん
:2007/01/16(火) 22:50:42
なにこのループするバッファ
585
名前:
デフォルトの名無しさん
:2007/01/16(火) 23:25:16
>>580
>すいませんが、わかりません。
えええ… ファイルの書き込みしてる部分コメントアウトすればいいじゃない…
586
名前:
デフォルトの名無しさん
:2007/01/16(火) 23:30:53
std::stringstream ss にまとめて出力しておき、最後に
fout << ss.rdbuf(); すると少しは速くなるかもしれない。
実験してないけど。
587
名前:
デフォルトの名無しさん
:2007/01/16(火) 23:31:28
あ、foutはバイナリで開いておいてね。
588
名前:
デフォルトの名無しさん
:2007/01/16(火) 23:33:51
>>586
>>582
589
名前:
デフォルトの名無しさん
:2007/01/17(水) 00:02:08
>585
あぁそういう意味でしたか。よくわかっていませんでした。確かにそれで差を見るのが一番根本的だなと
気がつきました。夜は電力来ないのでまた明日詳しく試してみます。ありがとう。
ファイルに記述するにしてもいろいろな方法があるのだなとただただ驚くばかりです。
ただ、折角英知を頂いても私があまり理解できないのが残念です。
頂いたコメントは全て保存しておき後日理解が深まってから再度確認させていただきます。
皆様ありがとうございました。
590
名前:
デフォルトの名無しさん
:2007/01/17(水) 01:21:10
>>588
やってみな。
#include <iostream>
#include <fstream>
#include <sstream>
#include <windows.h>
int main()
{
std::stringstream ss;
const int N = 100000;
DWORD d;
std::ofstream ofs("1.txt");
d = timeGetTime();
for (int i = 0; i < N; i++)
ofs << i << "回目です。" << std::endl;
std::cout << (timeGetTime() - d) << "ms." << std::endl;
ofs.close();
ofs.open("2.txt", std::ios::out | std::ios::binary);
d = timeGetTime();
for (int i = 0; i < N; i++)
ss << i << "回目です。" << std::endl;
ofs << ss.rdbuf();
std::cout << (timeGetTime() - d) << "ms." << std::endl;
}
591
名前:
デフォルトの名無しさん
:2007/01/17(水) 01:23:27
>>588
おっとっと。バイナリモードで開くと、0x0d0aにならずに0x0aにしか
ならないのでテキストモードで開く必要があるな。
#include <iostream>
#include <fstream>
#include <sstream>
#include <windows.h>
int main()
{
std::stringstream ss;
const int N = 100000;
DWORD d;
std::ofstream ofs("1.txt");
d = timeGetTime();
for (int i = 0; i < N; i++)
ofs << i << "回目です。" << std::endl;
std::cout << (timeGetTime() - d) << "ms." << std::endl;
ofs.close();
ofs.open("2.txt");
d = timeGetTime();
for (int i = 0; i < N; i++)
ss << i << "回目です。" << std::endl;
ofs << ss.rdbuf();
std::cout << (timeGetTime() - d) << "ms." << std::endl;
}
592
名前:
デフォルトの名無しさん
:2007/01/18(木) 07:02:21
http://www.open-std.org/jtc1/sc22/wg21/
News 2007-01-16: C++ Standard Core Language Issues List (Revision 45) is available
593
名前:
デフォルトの名無しさん
:2007/01/18(木) 14:24:08
namespace impl
namespace detail
ってどう使い分けるのが普通なのでしょうか?
594
名前:
デフォルトの名無しさん
:2007/01/18(木) 14:30:58
Koenig Lookupに気を付ければどのように使ってもよい。
595
名前:
デフォルトの名無しさん
:2007/01/18(木) 22:23:59
http://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html
どうなんでしょうか
596
名前:
デフォルトの名無しさん
:2007/01/18(木) 22:48:35
有名な joke だね。本人もいたくお気に入りらしいぜ。
597
名前:
デフォルトの名無しさん
:2007/01/19(金) 19:10:17
それのK&R版もあったはず。こいつの下の方か。
http://www.genpaku.org/realprogrammerj.html
598
名前:
デフォルトの名無しさん
:2007/01/19(金) 21:20:57
>>597
これを読んでビールが飲みたくなった。
599
名前:
デフォルトの名無しさん
:2007/01/19(金) 23:53:03
ほげ
ふが
もげ
ぱも
むも
ぴよよ
こんな感じでインデントされたテキストを
インデントごとに構造体に読み込みたいんですが
さっぱりわかりません
struct text{
char* str;//行のデータ
text* childs;//自分よりも一つだけインデントされているデータ
};
読み込みは
while(ifs.getline(buf,_MAX_PATH)){}
みたいなループなのに、データ構造は再帰的なので
もしかしてスタックとか使わないといけないんでしょうか
何か方針でもいいので教えていただけませんか
お願いします
600
名前:
デフォルトの名無しさん
:2007/01/19(金) 23:59:43
>>599
そう思うんならスタック使って書けよ。
601
名前:
デフォルトの名無しさん
:2007/01/20(土) 00:23:03
自分と同じ深さのやつは?
602
名前:
デフォルトの名無しさん
:2007/01/20(土) 00:54:06
>>599
どう見てもツリーになるんだから、その構造ではダメだろ、考え直せ
603
名前:
デフォルトの名無しさん
:2007/01/20(土) 01:49:20
.注.:.私.の.有.意.義.な.発.言.に.対.し.、.自.分.の.理.解.不.足.を.棚.に.上.げ.煽.り.、.1.行.レ.ス
.で.返.す.方.が.多.い.よ.う.で.す.が.、.そ.の.よ.う.な.方.は.ス.レ.の.皆.様.を.混.乱.さ.せ.る.だ.け.で.な.く
.ス.レ.の.雰.囲.気.を.崩.し.か.ね.な.い.の.で.お.黙.り.下.さ.い.。
.ま.た.質.問.者.は.回.答.者.に.知.識.を.披.露.す.る.場.を.与.え.る.貴.重.な.存.在.な.の.で.、
.質.問.者.を.見.下.し.た.回.答.、.あ.ま.り.に.も.儀.礼.を.欠.い.た.回.答.も.厳.重.に.禁.止.い.た.し.ま.す.。
.忙.し.い.中.、.少.な.い.時.間.の.合.間.を.縫.っ.て.質.問.し.に.来.て.る.わ.け.で.す.の.で.、
.そ.の.辺.ご.承.知.下.さ.い.。.な.お.、.当.方.が.質.問.に.対.し.て.有.意.義.な.答.え.で.あ.る.と
.判.断.し.た.方.に.は.評.価.い.た.し.ま.す.の.で.各.自.よ.く.調.べ.、.よ.く.考.え.正.確.な.回.答.を.す.る.よ.う.に.。
604
名前:
デフォルトの名無しさん
:2007/01/20(土) 01:52:32
>ス.レ.の.皆.様.を.混.乱.さ.せ.る.だ.け.で.な.く
>.ス.レ.の.雰.囲.気.を.崩.し.か.ね.な.い
>>603
まさにお前のことだなw
605
名前:
デフォルトの名無しさん
:2007/01/20(土) 02:05:32
どう見てもツリ
606
名前:
デフォルトの名無しさん
:2007/01/21(日) 16:28:10
どうみてもツリー
607
名前:
デフォルトの名無しさん
:2007/01/21(日) 16:35:59
>>11
>>16
>>31
>>33
>>357
>>361
>>603
608
名前:
デフォルトの名無しさん
:2007/01/21(日) 16:38:43
603 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
609
名前:
デフォルトの名無しさん
:2007/01/21(日) 22:19:58
C++ 5.5.1なんですが
ファイルの途中の行を編集する関数ってありますか?
例えば10行あるうちの3行目だけを置換できるもの
やっぱり入力ファイルを読みながら出力ファイルに書き込むしか
方法はないんですか?
教えて下さい
610
名前:
デフォルトの名無しさん
:2007/01/21(日) 22:29:48
>>609
C++ 5.5.1 ってなんだ?
とりあえず答えは、全部書くしかない。10行のテキストぐらいならまったく問題ないだろう。
611
名前:
デフォルトの名無しさん
:2007/01/21(日) 22:47:24
>>609
1行ずつリストに突っ込んで3行目のを消して別の突っ込めば
612
名前:
デフォルトの名無しさん
:2007/01/21(日) 23:04:12
>>609
です
レスどうもです
残念ですが頭からやります
613
名前:
デフォルトの名無しさん
:2007/01/21(日) 23:43:48
環境依存だけどメモリマップトファイル使えば出来るんじゃないかな。
614
名前:
デフォルトの名無しさん
:2007/01/22(月) 02:12:51
>>613
サイズが変わらないならね
615
名前:
デフォルトの名無しさん
:2007/01/22(月) 03:12:06
グローバルなinline関数を作りました。
(.hに定義して、.cppで処理を書いてます).
この関数が定義された、同じソースファイル内では使えますが、
他のファイルで使うと、コンパイルは成功しますが、リンクに失敗します(外部参照が未解決
inlineを使わないと成功します。
inlineを使った場合、同じソース内のみで使用可能ということですか?
それとも、定義等の仕方が悪いのでしょうか。
616
名前:
デフォルトの名無しさん
:2007/01/22(月) 03:15:56
.h de teigi
617
名前:
デフォルトの名無しさん
:2007/01/22(月) 04:41:14
>>615
ヘッダに関数の処理がないとだめですお。
618
名前:
デフォルトの名無しさん
:2007/01/22(月) 08:39:45
ヘッダに関数定義するのってなんか嫌くね?
619
名前:
デフォルトの名無しさん
:2007/01/22(月) 08:50:05
>>618
そう思うんなら inline にしなければいい。
620
名前:
デフォルトの名無しさん
:2007/01/22(月) 08:50:13
別に
621
名前:
デフォルトの名無しさん
:2007/01/22(月) 09:03:42
>>615
ファイル間最適化能力のあるコンパイラを使え。
#詳細は該当スレにて。
622
名前:
デフォルトの名無しさん
:2007/01/23(火) 23:16:39
例外処理のコーディングしてるんだけど、
C++だと例外クラスとか作ったりするのが一般的なのかな?
623
名前:
デフォルトの名無しさん
:2007/01/24(水) 03:30:11
>>622
はい。 std::exception を継承して作ってください。
よくある例外は標準ヘッダ stdexcept で定義されていますので、
そちらを使われるのがよいかもしれません。
624
名前:
デフォルトの名無しさん
:2007/01/24(水) 20:52:47
stlのを継承するってのは、
stlからの例外も一緒に取得で便利ってことですか?
625
名前:
デフォルトの名無しさん
:2007/01/24(水) 21:07:44
>>624
大本のところで全ての例外をcatchしたようなとき、
どんな例外が投げられるかわかっていないと、
例外が投げられたかとしか情報が得られないけど、
std::exceptionから派生していれば何がしかのメッセージは得られるから。
つまり、
>>622
の作ったライブラリを使う人にとって都合がいいから。
626
名前:
デフォルトの名無しさん
:2007/01/24(水) 21:15:09
ふぅん。ありがトン!
627
名前:
デフォルトの名無しさん
:2007/01/24(水) 21:40:17
std::exceptionの派生にすると、what()の実装に困るのがよくあるパターン。
628
名前:
デフォルトの名無しさん
:2007/01/24(水) 21:44:14
せめてwchar_t*を返したくなる
629
名前:
デフォルトの名無しさん
:2007/01/24(水) 21:59:18
std::exceptionを継承して、引数付きコンストラクタを作るのはOKですか?
630
名前:
デフォルトの名無しさん
:2007/01/24(水) 22:30:13
可能ならstd::runtime_errorかstd::logic_errorから継承したほうが
柔軟性が増して良いと思う。
>>629
例外発生時に別の例外を発生させ得ない操作だけを行うなら問題ない。
631
名前:
デフォルトの名無しさん
:2007/01/24(水) 23:10:51
すごく勉強になりましたありがとうーー
632
名前:
デフォルトの名無しさん
:2007/01/24(水) 23:19:41
マルチスレッドプログラムで、
どっかのスレッドで起きた例外を
別のスレッドで取得することってできるの?
例外が発生したスレッドを殺したいのだが。。。
633
名前:
デフォルトの名無しさん
:2007/01/24(水) 23:22:16
>>632
できない。
スレッド関数の根っこで catch(...) して終了させとけばいいだけじゃないの?
634
名前:
デフォルトの名無しさん
:2007/01/24(水) 23:27:44
>>633
やっぱりできないですか。
既にあるシステムで、スレッド関数たくさんあるから
そいつら全部に例外処理いれんの面倒だなーーーーとか
思ってたんで的外れとは思いましたけど質問させていただきました。
635
名前:
デフォルトの名無しさん
:2007/01/24(水) 23:29:24
>>634
スレッドの起動に使ってる関数を、最悪マクロで置き換えて、
実際に起動する関数は引数で渡された関数をラップするようにすれば
いいんじゃないか?
636
名前:
デフォルトの名無しさん
:2007/01/24(水) 23:40:02
>>632
なんか今、えらい人たちがそれについて
いろいろ考えてるみたいだ。俺には分からんがな
637
名前:
デフォルトの名無しさん
:2007/01/24(水) 23:43:39
>>635
それは頭良いですね。
ちょっとトリッキーだけど。。検討してみます
638
名前:
デフォルトの名無しさん
:2007/01/24(水) 23:45:23
マクロって……やめとけよ
王道はスレッドをラップするクラスを作ることだろ
ThreadとかRunnableとかさ
639
名前:
デフォルトの名無しさん
:2007/01/24(水) 23:48:23
>>638
Windowsだと
thisポインタが問題にならない?
_beginthreadでクラスのメンバ関数呼べるんだっけ?
ってスレ違いかな
640
名前:
デフォルトの名無しさん
:2007/01/24(水) 23:49:33
>>639
staticメンバ関数も知らないのか
C++を一から勉強しなおせよ
641
名前:
デフォルトの名無しさん
:2007/01/24(水) 23:52:37
>>640
いや、staticメンバ関数は知ってるけど。
>>638
のいうThreadクラスを継承すんのかなと思ったから
Javaみたいに。
642
名前:
デフォルトの名無しさん
:2007/01/24(水) 23:55:19
static thunk(void*ptr){
static_cast<Thread*>(ptr)->run();
}
_beginthreadex( ...,thunk, static_cast<void*>(this),... );
定石だぜ?
643
名前:
デフォルトの名無しさん
:2007/01/24(水) 23:57:38
>>642
おおーーーすげーーーー
定石なのかー
何の本に載ってんの?
恥ずかしながら初めて見ました
644
名前:
デフォルトの名無しさん
:2007/01/25(木) 00:00:36
今時スレッドラップしてるC++のライブラリなんて腐るほどあるんだから
コード嫁よ
645
名前:
デフォルトの名無しさん
:2007/01/25(木) 00:00:44
スレッドに限らずウィンドウプロシージャをラップするときにも使ったりするね
646
名前:
デフォルトの名無しさん
:2007/01/25(木) 00:05:54
すげーー勉強になるなー
ライブラリはあんま読んだことないけど
自分よりスキルある人が作ってんだから勉強になるだろうな
今度読んでみます
647
名前:
デフォルトの名無しさん
:2007/01/25(木) 00:07:20
何のライブラリが参考になるかお母さんみたいに教えてくれ
648
名前:
デフォルトの名無しさん
:2007/01/25(木) 00:12:38
それって、run()の中からメンバ変数にもアクセスできるのですか?
ちょー便利そうなんだけど
649
名前:
デフォルトの名無しさん
:2007/01/25(木) 00:38:35
不確かな知識でスレッド使ってどつぼにはまれ
650
名前:
デフォルトの名無しさん
:2007/01/25(木) 00:42:39
>>648
C++ でスレッドやるときは大抵皆そういうことしてると思うんだけど。
Windows だったら各種のコールバック(lpParamとかとる奴)でも同じ
技法を使うことが多いと思う。
651
名前:
デフォルトの名無しさん
:2007/01/25(木) 01:28:12
なるほど目から鱗です
652
名前:
デフォルトの名無しさん
:2007/01/25(木) 06:06:59
僕は鱗がはがれました
653
名前:
デフォルトの名無しさん
:2007/01/25(木) 08:20:52
必然的に思いつくようなパターンだと思うが
654
名前:
デフォルトの名無しさん
:2007/01/25(木) 13:01:36
>>652
ドライアイですか?
655
名前:
デフォルトの名無しさん
:2007/01/25(木) 14:22:03
いいえ、ドライスキンです
656
名前:
デフォルトの名無しさん
:2007/01/25(木) 19:31:33
わたしは鮫肌です
657
名前:
デフォルトの名無しさん
:2007/01/25(木) 21:27:33
クラス内のスタティック関数を
ポリモルフィズムしたいのですが
どうすればいいですか?
658
名前:
デフォルトの名無しさん
:2007/01/25(木) 21:34:23
static のかわりに virtual つけれ。
659
名前:
デフォルトの名無しさん
:2007/01/25(木) 21:40:51
いえ、スタティック関数がいいのです
660
名前:
デフォルトの名無しさん
:2007/01/25(木) 21:42:42
ポリモルするクラスAを作って、仮想関数内でstatic関数を呼ぶ
661
名前:
デフォルトの名無しさん
:2007/01/25(木) 21:59:53
ええーー
662
名前:
デフォルトの名無しさん
:2007/01/25(木) 22:14:42
CRTPとかシングルトンパターンの応用とかどうだろう。
663
名前:
デフォルトの名無しさん
:2007/01/25(木) 22:44:14
自分のクラスのスタティックメソッドへのポインタを返す仮想関数を作るとか?
664
名前:
デフォルトの名無しさん
:2007/01/25(木) 23:32:34
>>660
ありがとうございました。解決しました
665
名前:
デフォルトの名無しさん
:2007/01/25(木) 23:36:10
ポリモルって何かかわいい
666
名前:
デフォルトの名無しさん
:2007/01/25(木) 23:39:54
魔法少女ポリモル
667
名前:
デフォルトの名無しさん
:2007/01/26(金) 01:51:17
ポリモルフィズム ポ ピ パ
668
名前:
デフォルトの名無しさん
:2007/01/26(金) 03:12:14
マジカルクラス インヘリット!
669
名前:
デフォルトの名無しさん
:2007/01/26(金) 05:28:23
使い魔「スタチック=キャスト」
670
名前:
デフォルトの名無しさん
:2007/01/26(金) 10:19:44
猫でもわかるCを読み終わり、
C++についてや、中級者向けの踏み込んだ知識が欲しいと思ってます。
レビューなどを調べまわった結果、EffectiveC++がいいかなと思っているのですが
よろしければ助言を頂けないでしょうか
671
名前:
デフォルトの名無しさん
:2007/01/26(金) 10:50:43
>>670
とりあえず「憂鬱なプログラマのためのオブジェクト指向開発講座」でも読んどけ。
つか、Effective C++はある程度C++知ってる人間が読まんと意味ない本だぞ。
672
名前:
デフォルトの名無しさん
:2007/01/26(金) 12:52:52
>>671
遅レスすみません
先にオブジェクト指向勉強しないと駄目なんですね
それを読んだ後に独習C++を読んでみることにします
ありがとうございます<(_ _)>
673
名前:
デフォルトの名無しさん
:2007/01/26(金) 13:01:17
あと書けよ。ひたすら書け。絵と同じだ。
デッサンした数が実力にモロに影響する。
674
名前:
デフォルトの名無しさん
:2007/01/26(金) 13:04:38
ありがとうございます。
ではさっそく裸体をデッサンしてみます。
675
名前:
デフォルトの名無しさん
:2007/01/26(金) 13:21:08
うはwテラマングりんぐww
ごめん言ってみたかっただけ
676
名前:
デフォルトの名無しさん
:2007/01/26(金) 14:27:45
魔法少女C++
ポリモル 横山智佐
インヘリット 丹下桜
コンスト 折笠愛
ハゲ 若本規夫
677
名前:
デフォルトの名無しさん
:2007/01/26(金) 16:00:10
声優の選び方が渋いってか、一世代古いな。
双子キャラのバインド・ファースト、バインド・セカンドは田中理恵で。
678
名前:
デフォルトの名無しさん
:2007/01/26(金) 16:30:26
キャラクター紹介
ポリモル
OOの国から偽装派遣されてきた魔法少女。
OO厨を増やそうと悪事に励むが失敗ばかり。
インヘリット
真のOOの継承者。
OOの国とは敵対関係にありながら
ポリモルを改心させようとOOの真実を説く。
コンスト
OOの国の創造主。
崩壊の進むOOの国を救うため
指揮命令系統を無視してOO厨の獲得をポリモルに命じる。
679
名前:
デフォルトの名無しさん
:2007/01/26(金) 16:45:47
お騒がせロリキャラのミュータブル(愛称は"みゅー")もな
680
名前:
デフォルトの名無しさん
:2007/01/26(金) 17:04:04
この番組は
株式会社すとらうすとらっぷ
の提供でお送りします。
681
名前:
デフォルトの名無しさん
:2007/01/26(金) 17:05:10
第1話 ポリモル大地に立つ
682
名前:
デフォルトの名無しさん
:2007/01/26(金) 17:26:37
おまえら二次裏あたりでやれ。
683
名前:
デフォルトの名無しさん
:2007/01/26(金) 18:14:52
同意。
684
名前:
デフォルトの名無しさん
:2007/01/26(金) 19:09:47
使い魔
スタチック=キャスト
厳格でお節介な禿キャラ
リ・インタープリット=キャスト
乱暴者でトラブルメイカーな禿キャラ
コンスト=キャスト
殺意の波動に目覚めた禿キャラ
ダイナミック=キャスト
物知りな禿キャラ
685
名前:
デフォルトの名無しさん
:2007/01/26(金) 20:33:44
>>684
ワロタ
686
名前:
デフォルトの名無しさん
:2007/01/26(金) 20:38:23
ポリモルするポインタをvectorに格納すると不具合が起きますか?
shared_ptrを使うか迷っているのですが。
687
名前:
デフォルトの名無しさん
:2007/01/26(金) 20:45:24
お前が心配しているようなことはデストラクタが仮想関数になっていれば問題ない。
でも、例外安全を考えるとstd::vector<boost::shared_ptr<> >か、boost::ptr_vector<>がお勧め。
688
名前:
デフォルトの名無しさん
:2007/01/26(金) 20:52:09
魔法少女ポリモル
http://pc10.2ch.net/test/read.cgi/prog/1169812216/
689
名前:
デフォルトの名無しさん
:2007/01/26(金) 21:11:57
>>687
C++ Coding Standardsという本にshared_ptrが良いと書いてあったものでお聞きしました。
何の不具合がおきるかは書いていなかったのですが。
boostにしてみます
690
名前:
デフォルトの名無しさん
:2007/01/26(金) 22:30:45
protected 非仮想ってどういうこと?
継承したクラスから呼べないんじゃリークするじゃん??
ポリモルタン教えて?
691
名前:
デフォルトの名無しさん
:2007/01/26(金) 22:31:34
すみません。基本クラスのデストラクタの話です。
692
名前:
デフォルトの名無しさん
:2007/01/26(金) 22:39:32
継承したクラスから呼べないってのは、どういうことだ?
693
名前:
デフォルトの名無しさん
:2007/01/26(金) 22:42:00
アップキャストして使うな、ってことだろ。
694
名前:
デフォルトの名無しさん
:2007/01/26(金) 22:45:30
デストラクタを仮想関数にする理由は、主に派生クラスのオブジェクトを基底クラスのポインタを通じてdeleteされる場合のため。
protected/private継承にしておけば、基底クラスへの変換は封じられるので問題ない。
695
名前:
デフォルトの名無しさん
:2007/01/26(金) 22:46:13
デストラクタをprivate仮想にするのは分かりますが、
どんなときにprotected非仮想にするのか分かりません。
使い方も分からない。
696
名前:
デフォルトの名無しさん
:2007/01/26(金) 22:47:36
たとえば、unary_functionそのものとか?
697
名前:
デフォルトの名無しさん
:2007/01/26(金) 23:10:37
忘れてください
698
名前:
デフォルトの名無しさん
:2007/01/26(金) 23:39:39
>695
protected: 継承することが前提
非仮想: 多態して使わない。仮想テーブルを使用しない。
と言う事で、protected非仮想destructorは
そのクラスから派生して使用する(基本クラスにする)けれども、
そのクラスのポインタとしては(多態的には)deleteしない
つうことですな。
さらに言うと、仮想関数を使用しない場合は仮想関数テーブルをまったく使用しないため
インスタンスのサイズがコンパクト&メソッドが高速というメリットもありんす
699
名前:
デフォルトの名無しさん
:2007/01/26(金) 23:50:10
別に言語仕様上そんなこともできるとだけ思っておいてもいいと思うよ。
俺もprotected非仮想なデストラクタを持つクラスなんて、
作ったこともないし見たこともない(と思っているだけで気付いていないだけかもしれないが)。
700
名前:
デフォルトの名無しさん
:2007/01/27(土) 00:10:09
>699
確かにポリシー的な使い方がほとんどですな。
使う時はprotected非仮想コンストラクタとセットかな。
701
名前:
デフォルトの名無しさん
:2007/01/27(土) 00:56:10
スマートポインタとペアで使えばいいんじゃないの?
protected非仮想デストラクタなインスタンス。
702
名前:
デフォルトの名無しさん
:2007/01/27(土) 01:22:31
>>698
基本クラスから継承させるけど、
Base* b=new Derived();
じゃなくて、
Derived* d=new Derived();
って使えということですか。なるほど。ややこしいですね
>>701
意味がよく分かりません....
703
名前:
デフォルトの名無しさん
:2007/01/27(土) 01:39:19
>702
いや、それはOK……というよりもそうしなきゃ基本クラス使う意味無いじゃない。
Base* b=new Derived();
delete b;
がNGなだけ。
704
名前:
デフォルトの名無しさん
:2007/01/27(土) 02:16:58
>>703
レスありがとうございます
となると、bはどうやって解放したらよいのですか?
705
名前:
デフォルトの名無しさん
:2007/01/27(土) 02:28:26
単純にいけるのかなーと思ってstatic_cast<Derived*>してみたけど規格としてもOK?
まあ俺はそういうクラスに触る機会ないからわかんないけど
706
名前:
デフォルトの名無しさん
:2007/01/27(土) 02:35:54
>>702
ttp://cppemb.blog17.fc2.com/blog-entry-23.html
ここの後半あたり読むといいかも
707
名前:
デフォルトの名無しさん
:2007/01/27(土) 02:41:15
>>702
ttp://www.zeroscape.org/cgi-bin/wiki/wiki.cgi?page=shared_ptr+minor+features
あとこことか
まさに
>>703
の状態をsmartポインタで回避できるのはなぜかがかかれてる.
708
名前:
デフォルトの名無しさん
:2007/01/27(土) 03:02:07
>>706
=707さん
ありがとうございました。よく分かりました。
shared_ptr deleterのテンプレートの使い方にびびりました
すごい
709
名前:
デフォルトの名無しさん
:2007/01/27(土) 05:34:56
int **a[100][100];
この宣言があってるのか、疑問なんですが、
4次元配列を動的に確保したのですが、どうしたらいいのかわかりません。
どうしたらいいのでしょうか?
言語はC++です。
710
名前:
デフォルトの名無しさん
:2007/01/27(土) 05:44:57
(int**)つまりint型のポインタのポインタが10000個。
・a[num]もしくはa[num][num]が指すのは(int**)型。
・*a[num]が指すのは(int*)型。
・**a[num]はint型。
711
名前:
デフォルトの名無しさん
:2007/01/27(土) 05:55:31
偉そうな事書いてみたけど実はそんなに詳しくなかったり。
int ****a,i;
const static int
_0=20,
_1=50,
_2=90,
_3=12;
a=new int***[_0];
for(i=0;i<_0;++i){
*a=new int**[_1];
}
for(i=0;i<_1;++i){
**a=new int*[_2];
}
for(i=0;i<_2;++i){
***a=new int[_3];
}
712
名前:
デフォルトの名無しさん
:2007/01/27(土) 07:38:41
>>710
>> 711
ありがとうございます!わかりました〜
713
名前:
デフォルトの名無しさん
:2007/01/27(土) 08:59:06
もはやCじゃん
714
名前:
デフォルトの名無しさん
:2007/01/27(土) 09:46:26
?
715
名前:
デフォルトの名無しさん
:2007/01/27(土) 10:16:32
もはやCoremadekaじゃん
716
名前:
デフォルトの名無しさん
:2007/01/27(土) 11:27:15
そして712はメモリリークに悩まされるのであった...
717
名前:
デフォルトの名無しさん
:2007/01/27(土) 11:38:10
>>711
むちゃくちゃやな、これ。
718
名前:
デフォルトの名無しさん
:2007/01/27(土) 13:00:06
普通にvector使えばいいんじゃない?
>709
vector<vector<vector<vector<int> > > >
サイズはresizeで確保するのが簡単ですな。
719
名前:
デフォルトの名無しさん
:2007/01/27(土) 13:05:03
>>711
これはひどい
720
名前:
デフォルトの名無しさん
:2007/01/27(土) 13:15:01
>>711
IOCCCでやれ
721
名前:
デフォルトの名無しさん
:2007/01/27(土) 14:33:44
Cをちゃんとやれと勧めるべきか、
Cは忘れてC++やれと勧めるべきか…。
722
名前:
デフォルトの名無しさん
:2007/01/27(土) 15:03:28
こんな感じ?
再帰を使えばもっときれいになるのか?
#include <iostream>
using namespace std;
int main()
{
int n1=5,n2=10,n3=15,n4=20;
int v=0;
int**** a;
a=new int***[n1];
for(int i=0;i<n1;i++){
a[i]=new int**[n2];
for(int j=0;j<n2;j++){
a[i][j]=new int*[n3];
for(int k=0;k<n3;k++){
a[i][j][k]=new int[n4];
for(int l=0;l<n4;l++){
a[i][j][k][l]=v++;
}
}
}
}
return 0;
}
723
名前:
デフォルトの名無しさん
:2007/01/27(土) 15:12:00
PHPの超便利配列(?)をするにはどうしたらよいですか?
こんなの
a['takahashi'][id]=n
a['takahashi'][age]=50
724
名前:
デフォルトの名無しさん
:2007/01/27(土) 15:12:55
>>723
PHPを使えばおk
725
名前:
デフォルトの名無しさん
:2007/01/27(土) 15:19:12
>>723
std::map
726
名前:
デフォルトの名無しさん
:2007/01/27(土) 15:21:17
C++からphp.exeを呼ぶことにしました
727
名前:
デフォルトの名無しさん
:2007/01/27(土) 15:31:22
あ、ありえん
728
名前:
wankuma
:2007/01/27(土) 15:35:58
http://blogs.wankuma.com/
729
名前:
ららら
:2007/01/27(土) 17:28:50
メンバ関数ポインタのオーバーロードを解決するには、
どうしたらいいでしょうねぇ。
SomeClass some;
MethodCaller<SomeClass>::Class(some, &SomeClass::Func);
SomeClass::Func がオーバーロードされている場合、
コンパイルエラーになってしまうんです。
730
名前:
ららら
:2007/01/27(土) 17:30:19
>>729
ごめんなさい。関数名が分かりにくいので訂正。
× MethodCaller<SomeClass>::Class(some, &SomeClass::Func);
○ MethodCaller<SomeClass>::Call(some, &SomeClass::Func);
731
名前:
デフォルトの名無しさん
:2007/01/27(土) 18:03:31
これって何するものですか?
732
名前:
デフォルトの名無しさん
:2007/01/27(土) 18:09:15
明示的にキャストするとか
733
名前:
ららら
:2007/01/27(土) 18:11:07
>>731
た・と・え・ば、の話。
役に立つコードかどうかは別の話ということで。
734
名前:
デフォルトの名無しさん
:2007/01/27(土) 18:12:56
オーバーライドした子クラスの関数から、同名の親クラスの関数を呼ぶには、
void ChildClass::Method() {
this->ParentClass::Method();
}
ですか?
735
名前:
デフォルトの名無しさん
:2007/01/27(土) 18:16:06
>>734
ParentClass::Method()
inherited::Method()とか書けたら良かったのに
736
名前:
デフォルトの名無しさん
:2007/01/27(土) 18:24:44
>>734
そうだよ
737
名前:
ららら、むじんくん♪
:2007/01/27(土) 18:25:57
738
名前:
デフォルトの名無しさん
:2007/01/27(土) 18:27:18
偉そうな奴だな
739
名前:
デフォルトの名無しさん
:2007/01/27(土) 19:07:33
会話が飛んでる? とおもったらコテかよ
740
名前:
デフォルトの名無しさん
:2007/01/27(土) 20:22:32
コーディングの暗黙の了解的な事に関して質問です。
単なるデータ構造を定義する場合は構造体を用いると思いますが、
構造体内に簡単なデータチェックやユーティリティー関数を定義する場合、クラスとするべきなのでしょうか?
例えば、
struct Date {
int nMonth;
SetMonth( int nParamMonth ) {
if ( nParamMonth < 0 || nParamMonth > 12 ) {
nMonth = DEFAULT_MONTH;
} else {
nMonth = nParamMonth;
}
};
int nDay; //以下略。。。
};
みたいな場合は、クラスと「すべき」なんでしょうか。
741
名前:
デフォルトの名無しさん
:2007/01/27(土) 20:33:24
会社なりプロジェクトなりでコーディングスタンダードがあれば別だが、
基本的には好きにしろボケの一言。
メンバ変数が0でoperator()しかないファンクタの類をstructにするとか普通だし。
742
名前:
デフォルトの名無しさん
:2007/01/27(土) 20:33:29
あくまでもデータ構造に主眼がおかれているのであれば
構造体で良いのではないだろうか。
743
名前:
デフォルトの名無しさん
:2007/01/27(土) 20:34:31
>>741
それはいちいちpublic書きたく無いからじゃないかね>ファンクタ
744
名前:
デフォルトの名無しさん
:2007/01/27(土) 20:39:35
ありがとうございます。
好きにさせて頂きます。
745
名前:
デフォルトの名無しさん
:2007/01/27(土) 20:52:20
結論が出ちゃった後だが
俺もclass+publicとstructが同じって概念があれば構わないと思う。
だからインタフェースをstructで定義するもありだと思ってる。
746
名前:
デフォルトの名無しさん
:2007/01/27(土) 21:12:36
漏れは、内部を隠蔽するものをclassに、全部公開するものをstructにしている。
747
名前:
デフォルトの名無しさん
:2007/01/27(土) 21:20:39
template<class T, class U = typename remove_const<T>::type>
struct hoge
{ };
つまり one keyword, one functionalityということだ
まあ正直どうでもいいと思う
748
名前:
デフォルトの名無しさん
:2007/01/27(土) 21:56:40
新これならわかるC++挫折しないプログラミング入門というのを見ながら
#include <iostream>
int main()
{
std::cout << "Hello!" << std::endl;
}
ていうのを書いてあるとおりにしたらエラーなんですけど何が違うのでしょうか?
いきなり挫折しそうです(汗)
749
名前:
デフォルトの名無しさん
:2007/01/27(土) 22:05:31
エラーの中身を書かない人には(掲示板を使うのは)難しい
750
名前:
デフォルトの名無しさん
:2007/01/27(土) 22:21:23
エラー E2209 hello.cpp 1:インクルードファイル'iostream'をオープンできない
エラー E2290 hello.cpp 7:型限定子'std'がクラス名または名前空間ではない(関数
main())
エラー E2379 hello.cpp 7:ステートメントにセミコロン(;)がない(関数 main())
これが中身なんですけど・・・
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.