【初心者歓迎】C/C++室 Ver.10【環境依存OK】
試してみてもやっぱりうまくいかないのですが・・・
なにか特別なことする必要があるんですか?
アフォなので詳しく教えてください!
>>850 再帰が深くならなくてすむような
再現データを食わせてみる。
都合のよい小さな再現環境がすぐに
作れなければ
再帰が深くなるたびにデータは狭まるか
答えに近づくかするはずだろうから
おかしくなるデータの範囲を
デバッガやログで絞り込む。
>>855 本読んで一から勉強したほうが早いっぽ。
>>854 好きなデータを突っ込める
テスト用のメインプログラムを作る。
絶対作れ。
特に
間違った呼び出し方をしたときに
ちゃんとエラーコードや例外を返せるかとかのテストは
本物の呼び出し元プログラムじゃ
すげー面倒っつーかほとんど不可能。
最近はJUnit VBUnit CppUnittとか便利なのがある。
質問です。
Rubyで言う、attr_accessor、つまりprivateのメンバ変数に対して
publicのset、get関数を作ってくれるようなシステムが
何かしらのテンプレートを介して使えたりするのでしょうか。
(標準ヘッダを使うではなく、プロジェクトの共通ヘッダとして手書き実装でも可です)
アクセッサを作るのが非常にマンドいんで、何とかしたいと思い
色々検索してみたのですが見つからず……。
宜しくお願いいたします。
>>859 BCCでいうところのこんなやつか?
class hoge {
public:
__property int moge = { read=_moge, write=set_moge };
private:
int _moge;
void set_moge(int v){ _moge = v; }
};
使ってるエディタでマクロ組むのが良いんではないかね?
>>859 多少違うがこんな感じか?
template <typename T>
class value_with_accessor
{
T value;
public:
T operator()() const {return value;}
void operator()(const T &t){value = t;}
};
class Test
{
public:
value_with_accessor<int> m;
};
Test t;
t.m(4);
std::cout << t.m();
>>860 私の手元はC++BuilderでなくVC++なので……。
なお、VC++では__propertyを使うと変数をいじっているようで
実は関数を介しているっていう奴が実装できるらしいですね、
使った事ないんですが……。
諦めて地道に作れやって事なのかな…… orz
friendの意味って何?
publicだけじゃダメなの?
不用意に参照されないようにするため?
>>862 ありがとうございます。
さらに修正を加え(readonlyとか)、自分のものに使わせて頂きました。
激しく便利!
(・Д・)こ、これがテンプレートの力なのかっ……!
……と思ったんですが、上記の例でクラスないし構造体のような
ものに適用しようと思ったとき、そのメンバへのアクセスを指定したい時は
どのようにしたら良いでしょうか。
>>862ソースで言うところの
value_with_accessor<int> m;
のintがクラスや構造体の時、mのメンバへのアクセスということです。
そういう時専用のテンプレートを作る事は
止むを得ないとは思うんですが、さらのそのメンバのメンバとかになると
気が遠くなってきます。ダメなのかなぁ……。
>>867 >>862を改造してもread-onlyにはできない。
きめ細かなアクセス制限を施したいならアクセス関数を書けばいい。
setter/getterを用意するなら、メンバへのアクセスを制限する理由はないんじゃないか?
つーか、setter/getter作るのが億劫なら公開しちゃえばいいのに。
#私ゃエディタのマクロで作ってるけど。
そうですね、書き込み用の関数をなくすと、誰も書き込めなくなりますしね。
やはりエディタですか。WZにがんばってもらおう……。
デスマ]λ... ドウセオレハマケグミダ...
でもテンプレートたのすぃ事は判明しましたw
871 :
デフォルトの名無しさん:04/10/28 22:30:44
872 :
デフォルトの名無しさん:04/10/28 23:10:33
プログラムが進むにつれて
流れがつかみにくくなりバグフィックスも難しくなる
もう疲れました
たかだか1000行程度なのにバグばっか
この先もっとバグが増えていくとなると気が遠くなります
プログラマーのみなさんの大変さがわかりました
C++ではなくてCに関する質問なのですが、
関数の引数についてどうしてもよく分からない点があります。
下の関数の引数の渡し方は、どう違うのでしょうか?
void funcTest( char* chrArg ) { ... };
void funcTest( char[] chrArg ) { ... };
>>872 細かい機能ごとなりの関数に分けるといいよ
>>873 配列とポインタの違い?それ以外何?
関数の中で chrArg を変更出来るか出来ないか
>>873 下の書き方はCでもC++でも許可されていません。
>>872 そら全体の設計が悪いんだよ。
C++を使ってるならオブジェクト指向や
デザパタの入門書を読んでごらん。
一度頭を打ってから読むと有難味が
よく判るよw
>>873 char[] chrArg なんて形は無いのでは?char chrArg[] ならあると思うけれど。
確か、関数の仮引数の最後のものだけはchrArg[]としてもポインタとして働くはず
だったので、引数が一つならどちらもポインタになると思うけれど、ポインタの方で
書くのが一般的だと思う。
>>875 本当ですか?
ごめんなさい、878間違っていたので自己レスです
>> 関数の仮引数の最後のものだけはchrArg[]としてもポインタとして働くはずだったので、
引数が一つならどちらもポインタになると思うけれど
上は全部間違いです
関数の仮引数としてのchrarg[]の最後の[]だけはポインタとして働くはずだったので、
[]が一つならどちらもポインタになると思うけれど
が正しいです
自分で読み返して何書いてるんだかって感じでした
Java出身ですか?
ソートについて質問です
名前、国語の点数、。数学の点数、英語の点数が書いてあるテキストを読み込んで
点数を合計して トップ10を表示するプログラムを作りたいのですが
点数を読む方法が解りません お手数かけますがよろしくお願いします
[テキスト]
ななしさん 30 40 50
ななしさん2 20 50 60
:::
200人まで続きます
>>884 何が分からないのですか?
ファイルの読み込み?
>>884 宿題スレ行ったほうがいいぞ。
宿題ならscanfで充分だと思うけど、
ここだと小難しく考える連中が多いからな。
>>886 scanf()ですか……
小難しいも何も、阿呆につける薬はないな。
buffのreturnについてアドレスではなく、データを先頭だけでなくすべてのデータを戻り値として
戻すことはできないのでしょうか。
というのもperlでsystem関数でCのモジュールを呼んでいるのですが
その戻り値にバッファのデータを返したいのです。
現状では、アドレスが返ってしまっているようです。
標準出力やファイルに書き出して、それを読んだら?
>>858 ありがと。CppUnit挑戦してみます。
891 :
デフォルトの名無しさん:04/10/29 15:08:43
VC++7.0で開発しています。
ごくまれにTRACE()を使用すると、
atltracemodulemanager.hののCAtlTraceProcessクラスのModuleCount()という関数で例外が発生してしまいます。
再現方法もまだわかっていないのですが、とにかくTRACE()をやめることで回避できるようです。
しかしこれが原因でTRACE()で落ちる、という理由がわかりません。
どなたかご存じでしょうか?
perlにもパイプあったっしょ?
#awkにもあるんだからないとは思わないけど。
Cで標準出力に出させてそれをパイプで取得するか、>889の言うようにファイル経由か。
>>888 >データを先頭だけでなくすべてのデータを戻り値として
perlはよく知らないが、構造体を使えば出来なくはない。
でもperlのモジュールがそんなアホな仕様になってるわけがない。
もう一度よく仕様読んだほうがいいぞ。
system関数は外部プロセスを起動するもの
perlモジュールをCで書くXSじゃないよ
895 :
デフォルトの名無しさん:04/10/29 21:46:32
>>892 VC7はよくわからんが、TRACE()の文字上限こえたんじゃない?
C++で質問なんですが、
friend class
ってのは、
class A{
friend classB;
public:
・・・・・
private:
・・・・・
}
class B{
・・・・・
・・・・・
}
としたら、BからAのpublic, privateを問わずあらゆるメンバを使用可能になるのではないのですか?
GCCを使っているのですが、BのメンバからAの変数やら関数を使おうとしたのですが、
undefine 〜
とエラーが出ます。
なにかヒントになるようなサイトとか助言ありませんか?
>>896 BでAを触ってるとき
ちゃんとAのクラス定義はincludeしてる?
classとB;の間にスペースが空いていないぞ。
y-x>=0で点(0,0)と(1,1)を含まないという条件式は
(y-x>=0)&&((x!=0)&&(y!=0))&&((x!=1)&&(y!=1))
でいいんでしょうか?
>>899 反例 (1,2)
(y-x>=0) && !((x==0&&y==0)||(x==1&&y==1))
じゃね?
>>900 ありがとうがざいます
うまくいきました
904 :
デフォルトの名無しさん:
2ch専用ブラウザ厨にそういうミスをする人が多いね。