【初心者歓迎】C/C++室 Ver.10【環境依存OK】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNGただしその場合、質問者は必ず、環境を書きましょう。
【歴代スレ】
1:http://pc5.2ch.net/tech/kako/1059/10590/1059041347.html
2:http://pc5.2ch.net/tech/kako/1067/10671/1067189450.html
3:http://pc2.2ch.net/test/read.cgi/tech/1069719929/ (消滅?)
4:http://pc2.2ch.net/test/read.cgi/tech/1073473867/ (消滅?)
5:http://pc5.2ch.net/test/read.cgi/tech/1077102238/ (dat落ち)
6:http://pc5.2ch.net/test/read.cgi/tech/1082182233/(dat落ち)
7:http://pc5.2ch.net/test/read.cgi/tech/1086373839/(dat落ち)
8:http://pc5.2ch.net/test/read.cgi/tech/1091264964/(dat落ち)
9:http://pc5.2ch.net/test/read.cgi/tech/1094494997/l50
【ラウンジ】質問、回答が長い時はココを使うと見やすい
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
関連スレは>>2-5ぐらい
0002デフォルトの名無しさん
NGNG【関連スレ(処理系別)】
★初心者にVisual C++を教えるスレ★ Part14
http://pc5.2ch.net/test/read.cgi/tech/1093672937/l50
■MFC相談室 mfc11.dll■
http://pc5.2ch.net/test/read.cgi/tech/1088084875/l50
C++Builder相談室 Part11
http://pc5.2ch.net/test/read.cgi/tech/1094749339/
GCCについて part4
http://pc5.2ch.net/test/read.cgi/tech/1090062751/l50
cygwin + mingwn + gcc 相談室
http://pc5.2ch.net/test/read.cgi/tech/1058134693/
タダで使えるBorland C++ Part4
http://pc5.2ch.net/test/read.cgi/tech/1091066805/l50
タダで使えるVisual C++ $2
http://pc5.2ch.net/test/read.cgi/tech/1086287039/l50
Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/l50
Turbo C++ 5.0 プログラミング
http://pc5.2ch.net/test/read.cgi/tech/1030878794/l50
0003デフォルトの名無しさん
NGNGC言語なら俺に聞け! Part 92
http://pc5.2ch.net/test/read.cgi/tech/1096696253/
C++相談室 part36
http://pc5.2ch.net/test/read.cgi/tech/1096304546/
ぼるじょあがC/C++の宿題を片づけますYO! 31代目
http://pc5.2ch.net/test/read.cgi/tech/1095075678/
【C++】template 統合スレ -- Part5
http://pc5.2ch.net/test/read.cgi/tech/1091522597/l50
C++は難しすぎ 難易度:2
http://pc5.2ch.net/test/read.cgi/tech/1071697977/l50
C言語の第一歩
http://pc5.2ch.net/test/read.cgi/tech/1031374980/l50
0004デフォルトの名無しさん
NGNG★C言語で遊ぼう!★
http://pc5.2ch.net/test/read.cgi/tech/1028269762/l50
プリプロセッサについて熱く語るスレ。
http://pc5.2ch.net/test/read.cgi/tech/1058203590/l50
C統合・質問スレッド
http://pc5.2ch.net/test/read.cgi/tech/1068359871/l50
フリーコンパイラー使えよ。
http://pc5.2ch.net/test/read.cgi/tech/1061384369/l50
C、C++の最適化について語るスレ
http://pc5.2ch.net/test/read.cgi/tech/1084676298/l50
ラウンジでC言語
http://etc3.2ch.net/test/read.cgi/entrance/1093006298/l50
0005デフォルトの名無しさん
NGNG一応関連スレも最新に更新したつもりだけど抜けがあったらスマソ。
0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG■ MFC相談室 MFC12.dll■
http://pc5.2ch.net/test/read.cgi/tech/1096848771/
0008デフォルトの名無しさん
NGNG早いな。オツカレ。
0009デフォルトの名無しさん
NGNGオーバーロードとオーバーライドがワケワカラン!
なんでこいつらこんな名前似てるの?
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNGとりあえず俺はオーバーライドの「ライド」という部分の意味で識別してる。
0012デフォルトの名無しさん
NGNGオーバーライドは・・・漢字で何て書くんだろ
ライドはrideだから乗る・・・上乗り。よし、覚えたぜ!!!
0013デフォルトの名無しさん
NGNGoverload - 荷を積み過ぎる
override - 優先する
だっけか?
0014デフォルトの名無しさん
NGNGoverride 騎乗位
0015デフォルトの名無しさん
NGNGダメじゃん
0016デフォルトの名無しさん
NGNGclに-gxでやれゴルァといわれちゃうんですけど
0017デフォルトの名無しさん
NGNG#include <stdio.h>
int main(void)
{
int a, x;
int *pa; /* ポインタ変数の宣言 */
a = 100;
pa = &a; /* 変数aのアドレスを代入する */
printf("address=%x\n",pa); /* 変数aのアドレスを表示 */
x = *pa; /* 変数aのアドレスの内容をxに代入 */
printf("data:a=%d x=%d\n",a,x);
}
を実行すると一瞬だけウインドウが表示されてすぐに消えてしまって
結果が確認できません
どうすれば結果が表示されたままになるのでしょうか?
0018デフォルトの名無しさん
NGNGどのように実行したのですか?
0020デフォルトの名無しさん
NGNG終わりにgetchar();
0021デフォルトの名無しさん
NGNG>>20
うまいこといきました
ありがとうございました
0022デフォルトの名無しさん
NGNGf5は何かのショートカットですか?
0023デフォルトの名無しさん
NGNG>>21
その前にCtl+F5ですよ。
0024デフォルトの名無しさん
NGNGint main(void)
{
int a, x;
int *pa; /* ポインタ変数の宣言 */
a = 100;
pa = &a; /* 変数aのアドレスを代入する */
printf("address=%x\n",pa); /* 変数aのアドレスを表示 */
}
↑の時はpaでアドレスが表示されるのに
#include <stdio.h>
int main(void)
{
char *pa;
pa = "abcd";
printf("%s\n",pa);
}
↑の時はアドレスが表示されないで文字のabcdが表示されるのですか?
0025デフォルトの名無しさん
NGNGありがとうございます
ちゃんと表示されたままになりました
0026デフォルトの名無しさん
NGNGだって文字列表示と指示してんじゃん。
0027デフォルトの名無しさん
NGNG出力書式でググッてみな
0028デフォルトの名無しさん
NGNG>>27
>printf("%s\n",pa);
調べてみました
でフォーマット指定子が%sの時はpaのアドレスにはいっているabcdが表示されて
%dにするとなんか数字が表示されたんですけどabcdが入ってるアドレスが表示されたんですか?
paはアドレスしか示さないと思ってたのにびっくりです
0029デフォルトの名無しさん
NGNGっていうか聞く前に自分で調べろや。
0030デフォルトの名無しさん
NGNG%p が使える環境ならそれを使うべき。
%x,%d で代用するならキャストが要る。
0031デフォルトの名無しさん
NGNGオブジェクト名は何度も確認したので間違いありません。CreateFileMappingには成功し、オブジェクトに書き込んだデータを
OutputDebugStringで表示することができました。失敗の原因として、オブジェクト名以外に何が考えられますか?
使用しているコンパイラはBCCです。猫でもわかるの123章のプログラムを実行しました。
0032デフォルトの名無しさん
NGNGstruct teststruct
{
int x,y,z;
};
void func(struct teststruct *test[]);
int main()
{
struct teststruct test[8];
test[1].x=8;
func(&test[1]);
}
void func(struct teststruct *test[])
{
printf("%d" , test[1]->x);
}
何度もすいませんけど
メイン関数内のtest[1]の内容を関数func()の中で見たいんですけど
どうしたらいいのでしょうか?
上の様にすると実行中に
test1.exe の 0x00411af4 でハンドルされていない例外が発生しました
: 0xC0000005: 場所 0xcccccccc を読み込み中にアクセス違反が発生しました。 。
と出てきます
0033デフォルトの名無しさん
NGNG○ func(test);
0034デフォルトの名無しさん
NGNG× void func(struct teststruct *test[])
○ void func(struct teststruct test[])
× printf("%d" , test[1]->x);
○ printf("%d" , test[1].x);
0035デフォルトの名無しさん
NGNGなんでそれで正しく動くと思うの?
0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNG>>34
>>35
レスありがとうございます
ご指摘の通り修正したらエラーは出なくなったんですけど
8じゃない別のすごい大きな数字が表示されます
test[1].x=8;
で8を代入したはずなのになんでなんですか?
いろいろ調べて例とか見て改良を加えてみたのですが
正しく動くかどうかまでは判断できなかったので聞いてみました
0038デフォルトの名無しさん
NGNG少なくとも自分で正しく動くと思うものを持ってきてくれ。
0039デフォルトの名無しさん
NGNGよくわからんので、オレ流に書き直してみた。
#include <stdio.h>
typedef struct
{
int x;
int y;
int z;
} teststruct;
void func(teststruct* pTest);
int main()
{
teststruct test[8];
test[1].x=8;
func(&test[1]);
}
void func(teststruct* pTest)
{
printf("%d\n" , pTest->x);
}
0040デフォルトの名無しさん
NGNGうまくいきました
おかげさまで解決しました
ありがとうございました
0041デフォルトの名無しさん
NGNGなぜ>>39でうまくいくのかよく考えてくれよ。
このスレは初心者歓迎って書いてあるから質問にはそれなりに回答するけど、
かわりにやってやるスレじゃないからな。
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNGOSはWindowsXP,コンパイラは.NET2003です。
("test.exe"での標準出力をbufにセットする処理)
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=122
以上の処理までは作成できましたが、
このとき、"test.exe"で'\n'や'\t'などの空白文字を標準出力しているのに
ReadFileしたときにはそれらの空白文字が飛ばされてbufにセットされています。
どこが間違いでこうなるのかがわからないのでお教え願います。
0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNG#include <math.h>
struct teststruct
{
int x,y,z;
};
struct teststruct func(void);
int main()
{
struct teststruct test[8];
test=func();
printf("%d" , test[0].x);
printf("%d" , test[1].x);
printf("%d" , test[2].x);
}
struct teststruct func(void)
{
struct teststruct test[8];
test[0].x=7;
test[1].x=1;
test[2].x=3;
return test;
}
func内のtest[0]〜test[7]をそっくりそのままmainに渡したいのですけど
上のプログラムだと
error C2440: '=' : 'teststruct' から 'teststruct [8]' に変換できません。
error C2440: 'return' : 'teststruct [8]' から 'teststruct' に変換できません。
とエラーがでますどうすればいいのでしょうか?
0047デフォルトの名無しさん
NGNGまず配列のコピーは代入したからといってコピーしてくれるわけではありません。
次に関数の返却値はコンパイルエラーそのままです。
だからC++では
const teststruct (&f())[8]{....} こんなことやって配列の同じ型なら返せますけど・・・だれもやらない。と、思う。
で、言いたい事は最初に言ったことを覚えればいいです。
最後に
ttp://www9.plala.or.jp/sgwr-t/
こんなところで勉強した方がいいかも。
内容は読んでないからよくわからないけど見出しではいろいろそろってる感じだし
なんか、本も出版してるみたい。
0048デフォルトの名無しさん
NGNG漏れならこう書く
#include <stdio.h>
struct teststruct
{
int x,y,z;
};
void func(struct teststruct* pTest);
int main()
{
struct teststruct test[8];
func(test);
printf("%d\n" , test[0].x);
printf("%d\n" , test[1].x);
printf("%d\n" , test[2].x);
}
void func(struct teststruct* pTest)
{
pTest[0].x=7;
pTest[1].x=1;
pTest[2].x=3;
}
0049デフォルトの名無しさん
NGNGわかり易そうな解説のサイトですね
お気に入りに登録しました
>>48
なるほど、リターンで返さないでもこうすればできるんですね
おかげさまで解決しました
お返事ありがとうございました
0050デフォルトの名無しさん
NGNG>なるほど、リターンで返さないでもこうすればできるんですね
お前もう一度一から勉強し直せ・・・。
0051デフォルトの名無しさん
NGNG下のプログラムは不完全なんですけど
やりたいことはわかってもらえると思うんですけど
#include <stdio.h>
#include <math.h>
struct teststruct
{
int x,y,z;
};
struct teststruct func(void);
int main()
{
struct teststruct test[];
test=func();
printf("%d" , test[0].x);
printf("%d" , test[1].x);
printf("%d" , test[2].x);
}
struct teststruct func(void)
{
a=5;
std::vector<struct teststruct> test(a);
test[0].x=7;
test[1].x=1;
test[2].x=3;
return test;
}
配列の要素数aの値はfunc内で求めなければいけないので今度は>>48の方法が使えなくなりました
func内のtest[0]〜test[a]をそっくりそのままmainに渡したいのですけど
どうすればいいのでしょうか?
c言語使ってます
0052デフォルトの名無しさん
NGNGc言語でvectorは使えない。これはc++のライブラリ。
あと君はポインタの勉強がまだのようですね。
ポインタが分からないと配列は扱えないので
まずそちらをきちんと勉強しましょう。
0053デフォルトの名無しさん
NGNGMFCアプリケーションでダイアログベースで作ってます。
ある程度コントロールを配置してイベントを書いたところで、
ダイアログのIDを変更したところ、
なぜかリソースビューのダイアログエディタでボタン等をダブルクリックしたら、
MFCクラスウイザードが立ち上がり、今までのソースファイルとは別のソースファイルのクラスの作成を促されます。
ダイアログのIDの変更を生かしつつ新しいクラスを作成せずに今まで作ったソースを利用するにはどうすればいいのでしょうか?
0054デフォルトの名無しさん
NGNG1行目と2行目の間にそこはかとなく矛盾があるがそれは置いておくとして、
ダイアログクラスのなかに enum{ IDD = HOGE }; の形でダイアログテンプレートのIDが記憶されてる。
それと実際のテンプレートのIDが合ってないとウィザードが新しいクラスを作ると言い出す。
005553
NGNG目的通り動きました。
0056デフォルトの名無しさん
NGNG確保されているんですか?
幾つかに分割されていることもあるんでしょうか?
0057デフォルトの名無しさん
NGNGポインタについてよく理解できていないようですね。私の分かる範囲で指摘しておきます。
まず、test=func();という記述は明らかにおかしいです。配列名は配列の基底アドレスを示す定数のポインタです。
従って、配列名を左辺に置くことはできません。
次に、return test;という記述がおかしいです。関数funcの戻り値はteststruct型の構造体ですが、
testはteststruct型の構造体へのポインタです。戻り値の型が一致していません。
このような場合一般的には、関数の引数として、teststruct型の構造体へのポインタを渡します。
そうすれば、main関数で宣言されたteststruct型の変数testの内容を、間接的に別の関数で書き換えることができます。
0058デフォルトの名無しさん
NGNG実体はシランがプルグラマからは連続した領域に見えるから(・ε・)キニシナイ!!
0059デフォルトの名無しさん
NGNGpublic:
A(){};
B* bobj;
void funcB(B*);
};
//A.h
class B{
public:
B(){};
A* aobj;
void funcA(A*);
};
endif//B.h
このような2つのヘッダファイルを
コンパイルすると、エラーになってしまいます。
AとBの間で通信を行おうとしているのですが、具体的にはAとBはウィンドウで
Aのボタンを押したら結果をBに反映させ、Bのボタンを押したら、結果を
Aに反映させようとしております。何か良い方法が無いでしょうか?
宜しくお願いいたします。
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNGmediatorパターン
006259
NGNGありがとうございます。A=プロパティシートB=子MDIチャイルドです。
>>60
多分先頭でclass B;と書くのですね?
今まで、こういうソースを見ても良くわからず、理解に苦しんでおりました。
>>61
共通の基底クラスを作ってそこからABを派生させるという事で宜しいでしょうか?
とりあえず、「AはA、BはB」と分けるのがスジと思っておりますので、「家系図」を
考えてみます。
ありがとうございました。
0063デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1095075678/669
・アルゴリズム・データ構造の説明(少なくていいです)
・スピードやメモリの効率向上のためなど工夫した点
を聞きたいのですが、おねがいします
0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNGマルチですんませんがマジで困ってるんです
助けてください
0066デフォルトの名無しさん
NGNGむしろ荒らしだろ
マルチするにも程がある
0067デフォルトの名無しさん
NGNGウエイトかけたいんですけど簡潔で効率的なウエイトのかけ方を
教えてくださいC言語でおねがいします
0068デフォルトの名無しさん
NGNGDirectDraw/Direct3D
0069デフォルトの名無しさん
NGNGそっちで聞いてみます
誘導サンクス
0070デフォルトの名無しさん
NGNGBOOL LoadFile(short nNum){ //ファイルを読み込む関数
HANDLE handle=0; //ファイルハンドル
CFileAercaiver cFa; //アーカイブファイルから読み込むための自作クラス。
if (!cFa.Open("アーカイブファイル名"nNum)) //成功したら、指定したアーカイブのnNum番目のファイルの情報とファイルハンドルを、cFaオブジェクトが保有します
handle = cFa.GetHandle(); //アーカイブファイルのハンドルを取得
/*cFa.Open()内では、
※m_hFileは、privateのメンバ変数
m_hFile = CreateFile("アーカイブファイル名", GENERIC_READ, FILE_SHARE_READ, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
//処理を省略)アーカイブファイルのヘッダーを読み、nNum番号のファイルへのファイルポインタ(dwFPont)を取得する。
SetFilePointer(m_hFile,dwFPont,NULL,FILE_BEGIN); //nNum番号のファイルの先頭にファイルポインタを移動
*/
//指定ファイルのヘッダーを読む
LoadHeder(handle);
}
------------------
BOOL LoadHeader(HANDLE &hFile){
RIFFHEAD riffhead; //自作の構造体 ※20byte
DWORD readed;
ReadFile( hFile, &riffhead, sizeof(RIFFHEAD), &readed, NULL );
}
このLoadHeader関数内のReadFileが問題で、ReadFileは1を返して、readedもちゃんと20になっているのだけど、
riffhead構造体のメンバがすべて0になってしまいます。なぜ読み込めないのか、ヒントだけでもお願いします。
0071デフォルトの名無しさん
NGNG007270
NGNGスミマセン、マジでそんなオチがつくかもしれません OTL
読み込もうとしてるファイルは、wavファイルのアーカイブなんですが、
その元のwavファイルには、ちゃんとヘッダー情報が保存されているのに…。
同じアーカイバのルーチンでbmpも扱っているけど、これは正常に読めてたので、
アーカイバには問題無いと思ってましたが、もう一度見直してみます。
007344
NGNG調べてみたら、bufはちゃんと改行文字を取得していて、
それを表示する際に間違えていました。
どうも、お手間をかけさせてすみませんでした。
0074デフォルトの名無しさん
NGNGminGWでコンパイルしたものとVCでコンパイルしたものとで違うんですがコンパイラ依存なんですか?
具体的にはminGWの方が
St16runtime_error
とかよくわからないプレフィックスが付いてるっす。
007570
NGNGホントにそういったオチでした… OTL ハズカシイ…
アーカイバをちょっと変更したとき、アーカイブファイルも更新してやるべきでした。
2日も悩んでたことが解決しました。ありがとうございました。
0076デフォルトの名無しさん
NGNGコンパイラ依存です。
007774
NGNGなるほど。ありがとう。
JAVAの教本か何かで例外には意味のある名前を付けようみたいな事が
書いてあってC++でも型名取得する方法あるかな・・・と思ったのですが、name()で
常に意味のある文字列を返すと思って使わない方がよさげですね。
0078デフォルトの名無しさん
NGNG"error LNK2001: 外部シンボル ""private: static int * a::ptr" (?ptr@a@@0PAHA)" は未解決です。"
というエラーが出て、リンクの時点で失敗します。
ソースは以下です。
ポインタが、普通の変数なら上手くいくんですが、原因が分かりません。
分かる方いらっしゃいましたら、ご教授お願いします。
//----------------------------
#include <stdio.h>
class a{
static int *ptr;
static void func(void);
};
int a::*ptr;
void a::func(void)
{
ptr = NULL;
}
void main(void)
{
}
//----------------------------
0079デフォルトの名無しさん
NGNG#include <cstdio>
class a{
static int *ptr;
static int *func(void);
};
int a::*ptr (a::func ());
int *a::func(void)
{
return NULL;
}
か
int a::*ptr (NULL);
0080デフォルトの名無しさん
NGNG008179
NGNG-int a::*ptr (a::func ());
+int *a::ptr (a::func ());
-int a::*ptr (NULL);
+int *a::ptr (NULL);
0082デフォルトの名無しさん
NGNG拾ったものをコピペすればきちんと実行されるが、
自分で全く同じものを書いてもエラーがでてしまいます。
わけがわかりません。例えば、
#include <stadio.h>
int main()
{
printf("Hello World\n");
return 0;
}
で、インクルードファイルをオープンできない
プロトタイプ宣言のない関数printfのよびだし
とでてコンパイルできません。初心者以下の質問のような気がしますが、
どうかどなたか何が悪いのか教えてください。
コンパイラはBCCです。
0083デフォルトの名無しさん
NGNG#include <stadio.h>
よく嫁
0084デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdio.h>
(゜∀゜)
008582
NGNGみなさんどうもありがとうございました。
0086デフォルトの名無しさん
NGNGどんまい。
0087デフォルトの名無しさん
NGNG008878
NGNGレスが遅くなりました。
int *a::ptr (a::func ())
はつまり、func の戻り値を入れているということですよね?
確かに、試してみたらうまくいきました。
が、なぜfunc関数内でptrに直接入れられないのでしょうか?
ともあれ、もう少しいろいろいじってみます。
教えてくださってありがとうございました。
0089デフォルトの名無しさん
NGNGclass a { static int *ptr; };
int a::*ptr;
これら二つの変数が別物だということは理解できていますか?
009078
NGNGえーと、いろいろ調べてみたのですが、
int a::*ptr;
は、つまりメンバポインタというやつでしょうか?
78のソースの
int a::*ptr;
を、
int *a::ptr;
に変えただけで上手くビルドできたので、
普通のポインタを宣言するところを、間違ってメンバポインタを宣言してしまっていた
という解釈でいいんでしょうか?
うーむ、なんかトンチンカンなことをいっている気がします。
まだまだ修行が足りませんね。
0091デフォルトの名無しさん
NGNGとかがありますけど、「好きに選べ」以外の選択材料はありますか?
0092デフォルトの名無しさん
NGNG概ねあってますが、この場合、宣言というよりも定義という方が正しいと思います。
0093デフォルトの名無しさん
NGNGint *a::ptr;はint*型でclass aのメンバptr。
int a::*ptr;はint型のclass aのメンバへのポインタptr。
【その他】
・こういう時はint* a::ptr;と書いた方が分かりやすい。
・宣言と定義はきちんと使い分けること。
・C++で関数の引数がないときに普通voidは書かない。(void func()で十分)
・void main()は規格にない。int main()にすること。
0095デフォルトの名無しさん
NGNGどこの普通よ
0096デフォルトの名無しさん
NGNGはCとC++の区別のつかない低脳ぶり
0097デフォルトの名無しさん
NGNGc ⇔h
cpp⇔hpp
cxx⇔hxx
0098デフォルトの名無しさん
NGNGclass Hoge{
priavte:
int hage;
public:
Hoge(){ hage = 0; }
Hoge( const Hoge &src ){ this->hage = src.GetHage(); }
~Hoge(){}
int GetHage(){ return hage; }
};
大抵のHPで書かれている方法が、上記のようなことなのですが
error C2662: 'Hoge::GetHage' : 'const Hoge' から 'Hoge &' へ 'this' ポインタを変換できません。
とエラーが出てしまいます。const を外せばエラーは消えますが…
環境はVC7ですが、VC7の仕様で他のコンパイラでは正常なのでしょうか?
また、仕様であれば、現在はどのような方法が主流なのでしょうか?
ご教授お願いします。
0099デフォルトの名無しさん
NGNGスレ汚しすみませんでした
0100デフォルトの名無しさん
NGNG>なぜfunc関数内でptrに直接入れられないのでしょうか?
入れれないことはないです
ちゃんとa::funcを呼び出せばOK
#include <cstdio>
class a{
public:
static int *ptr;
static void func(void);
};
int *a::ptr;
void a::func(void) {ptr = NULL;}
int main(void) {
a::func ();
return 0;
}
0101デフォルトの名無しさん
NGNGふつーWindowsならshift_jis, Unix系ならeuc-jpでソースを書く
やないですか。
cout << "Hello, 世界";
文字列リテラルにマルチバイト文字含みますわね。
FDIS召還したらば:
string-literal とは
s-char-sequence を "" または L"" で囲ったもの
s-char-sequence とは
s-char または
s-char-sequense s-char (←つまり s-charの並び)
s-char とは
任意の source character set (" \ 改行 を除く) または
escape-sequence または
universal-character-name (← \u... \U... のことらしい)
となってます。source character set はいわゆる ASCII文字。
とすると、文字列リテラルの中に(いわゆる)'漢字'をじか書き
してはイケナイってことなんでしょか? 漢字を文字列リテラル内に
埋め込みたいなら excape-sequence 使わにゃならんのでしょうかホントは
0102デフォルトの名無しさん
NGNG自分が正しいと思うことをやりなさい。
0103デフォルトの名無しさん
NGNGファイルの中が 00 00 00 01 をfreadでintに読み込むと
printfで"%#x"を表示させたとき0x1000000になるんですが
こうなるのが普通なんでしょうか?0x1になると思ってたんですが…
どういう理屈なんでしょう?fwriteで0x1を書き込んでも01 00 00 00になるし
環境はMinGW gcc3.2.3でやってます。
0104デフォルトの名無しさん
NGNGタマゴを割る時、太い方と細い方のどっちで割る?
おれっちは細い方から割るかな。
0105デフォルトの名無しさん
NGNGリトルエンディアン ビッグエンディアン
で検索汁
0106デフォルトの名無しさん
NGNG即レスどうもです。
CPUによって違いがあるのですね。
勉強になりました。ありがとうございました。
0107104
NGNG0108デフォルトの名無しさん
NGNGネットワークに流すデータの場合はリトルエンディアンのCPUであっても
ビッグエンディアンに変換してから送出しないといけない場合があるよ
0109デフォルトの名無しさん
NGNG疲れました
さようなら…
0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNG設計か君の頭にバグがあるからだと思う
0112デフォルトの名無しさん
NGNG翻訳フェーズのはじめあたりで、 basic source character set 以外の文字をすべて
universal-character-name に置き換える処理が入ることになっている。
この置き換え方法は処理系定義とされていて、
さらに同じ結果が得られるなら独自の変換を使用してもよい事になっている。
ttp://www.kuzbass.ru/docs/isocpp/lex.html#lex.phases
あまり初心者歓迎スレでやる話じゃないな。
0113デフォルトの名無しさん
NGNGどこらへんまでプログラムを解析できるんでしょうか?
ソースくらいまでわかってしまうんでしょうか?
0114デフォルトの名無しさん
NGNGソースはどうやっても無理。情報が残ってないから。
同じようなソースを復元するのなら、スキル・想像力・忍耐力・時間があれば可能だろうが…
0115デフォルトの名無しさん
NGNG元の変数名はわからないから用途も不明。
定数なんかも即値で埋め込まれるからマジックナンバーだらけ。
条件文やループ文もJUMP命令の嵐。
そんな汚いソースでよければ解析してくれたまい。
0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNG俺が最初に就職した会社で最初に振られた仕事がモロにそれだった
objファイルとexeファイルだけ渡されて、ソースの復元を(構造体も含めて)しろって
ソース読む能力を付けさせるための仕事だったんだろうとは思うが、泣きそうになりながら
復元した記憶がある
0119デフォルトの名無しさん
NGNG分かるよ
0120デフォルトの名無しさん
NGNGそれ、いわゆる新人イジメだと思う。
0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNG意外なことにVCの適合率がかなり高い
でもオススメはやっぱgcc
0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNGforやif分で宣言した変数はそのブロック内に限られると書籍には書いてあったのですがVC++6.0で試してもどうもそうはないってないと思うのです。
下のソースをコンパイルしたときにスコープ外での使用でエラーが出るはずだと思うのですがエラーにならないのはなぜなのでしょうか?
#include <iostream>
using namespace std;
void loop()
{
for(int i=0; i<10; i++){cout << "ループ" << i+1 << "回目です。\n";}
cout << i << endl;//forブロックの外でiを使用。ここでエラーが出るはずなのでは??
}
int main()
{
loop();
return 0;
}
0128デフォルトの名無しさん
NGNGVC 2005でも未だに直ってない
嫌ならオプションで消せるが…
0129デフォルトの名無しさん
NGNGかつてARMと呼ばれる書籍でそのように決められていたから。
現在では規格で君が言ったように決められているから、コンパイラの
挙動が間違っている。コードの移植性が下がるから、自分で規格通りに
なるように気を付けよ。
0130デフォルトの名無しさん
NGNGマクロ無かったっけ?
#define for(arg) if (false); else for (arg)
こんな感じでforのスコープを規格通りにさせるやつ
0131デフォルトの名無しさん
NGNGそんなマクロ最悪
0132デフォルトの名無しさん
NGNGVC使ってないので記憶が曖昧なんだけど
結構そのたくましさに感心したんだけどな
最悪な理由を解説よろしく
0133デフォルトの名無しさん
NGNGオプションで直せるんですか?
VC++6.0でも直せればぜひぜひ方法をば・・
0134デフォルトの名無しさん
NGNGってかC++使いたいんならVC6なんか使うなよ
.NETに移行すれ
0135デフォルトの名無しさん
NGNGC/C++→カスタマイズ→Microsoft言語拡張機能を無効にする
にチェック。
でもMFCとか使えなくなるんじゃないかな。
0136130
NGNG0137デフォルトの名無しさん
NGNGMFCが使えなくなる・・・さりげなく厄介ですね。
コンソールで動くプログラム限定で使用が望ましい気配。。。
0138デフォルトの名無しさん
NGNG最近はVC++使ってないからシラネ
0139137
NGNGVC++6.0がすでに時代遅れなのか。。やっぱり.netを検討するべきか。。。
0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNGあと、例のマクロは
#define for if(0);else for
だな
0142デフォルトの名無しさん
NGNG分けて書くのって何故ですか?
1つのファイルに書いた方が分かりやすいように思うんですが。
0143デフォルトの名無しさん
NGNG分割コンパイルのため。
0144デフォルトの名無しさん
NGNGクラスを使うだけの人にクラスの内部処理の詳細を見せないため。
0145デフォルトの名無しさん
NGNG一度コンパイルすれば修正するまでコンパイルし直さなくて済む。
0146デフォルトの名無しさん
NGNG当時はJavaみたいに一つのファイルから
定義だけを抜き出す方法を作れなかった。
0147デフォルトの名無しさん
NGNG分けても修正すればコンパイル必要じゃん。
0148デフォルトの名無しさん
NGNG下のような例の場合はどうすればよいのでしょうか?
void foo (const char *format, ...) { /* xxx */ }
/* void vfoo (const char *format, va_list ap) { } */
void bar(int numargs, char *argv[]) /*ここは自分で変えられない*/
{
/*foo()かvfoo()を呼びたい*/
/*vfoo(args[0], args[1:]); のようなことがしたい。*/
/*つまりfoo(args[0], args[1]、args[2], args[3], ...args[numargs -1]); のようなことがしたい。*/
}
numargsとargsからva_listを作ることはできますか?
0149デフォルトの名無しさん
NGNGva_listそのものを作ることは出来ない。
ただし処理系に依存しても良い(移植を考えない)のなら、
適当にスタックに積んでから関数を呼べば実現出来る。
0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNG{
if(b==0)
{
.......
}
}
これを
if (c==0)
{
if (a==0)
{
if(b==0)
{
.......
}
}
}
という風に新たにc==0の条件文を外側につけた時に
プログラムを見やすくするためにa==0とb==0の条件文を右に
ずらさなければならないのですが
この例だとたった数行分をずらすだけでいいのですが
もっと入れ子になった条件分をかたっぱしから右にずらすのは
骨が折れます
一度に複数行を右に平行移動させることはできないのでしょうか?
0152デフォルトの名無しさん
NGNG0153vim
NGNG0154デフォルトの名無しさん
NGNGずらしたい行を選択してTAB。左にずらすときはShift+TAB。
0155デフォルトの名無しさん
NGNG>>154
お返事ありがとうございます
うまいこといきました
0156デフォルトの名無しさん
NGNG}else{
}
みたいに最初の { を if() の右側に書いてしまうのは
エディタのことを考えると良くない書き方なんでしょうか?
0157デフォルトの名無しさん
NGNGif文はいつもそんな感じで書きますが。
0158デフォルトの名無しさん
NGNG{
};
f()
{
}
if (x) {
}
else {
}
try {
} catch (a) {
} catch (...) {
}
これ以外は認めない。
0159デフォルトの名無しさん
NGNG{
}
else
{
}
try
{
}
catch( a )
{
}
catch(...)
{
}
だな、俺は。
0160デフォルトの名無しさん
NGNGだから修正するまでと書いただろう。読めないのか?
0161デフォルトの名無しさん
NGNGofstreamへコピーしたいのですが簡単に書く方法はありますでしょうか?
// ifsの[offset, pos)をofsへコピーしたい
size_t offset, pos;
ifstream ifs;
ofstream ofs;
.....
ifs.seekg(offset);
// ofs << ifs.rdbuf(); <-ifsを最後まで読むだけならこれで良いんですが・・・
大きなデータなのでバッファをちゃんと扱わないとマズイです。よろしくお願いします。
0162161
NGNG0163デフォルトの名無しさん
NGNGどう解決したのか教えてください。
0164161
NGNGostreambuf_iterator<char> oit(ofs);
for(size_t i = 0; i < pos - offset; ++i, ++iit, ++oit){
*oit = *iit;
}
か,もしくは
int meta;
streambuf *isb = ifs.rdbuf();
streambuf *osb = ofs.rdbuf();
meta = isb->sgetc();
osb->sputc((char)meta);
for(size_t i = 0; i < pos - offset - 1; ++i){
meta = isb->snextc();
osb->sputc((char)meta);
}
としました.問題があるとか,もっと良い方法があるとかあったら指摘お願いします.
0165デフォルトの名無しさん
NGNG俺もいろいろ考えたけど、たぶんその前者が最適解でしょうな
0166デフォルトの名無しさん
NGNGstd::copy使えよ
0167デフォルトの名無しさん
NGNGどうやるの?
0168デフォルトの名無しさん
NGNGadvance(iit, pos - offset);
copy(iit, end, oit);
かな
0169デフォルトの名無しさん
NGNGそれ動く?
0170デフォルトの名無しさん
NGNG動かないならcopy_n関数テンプレート作ればいいし
0171デフォルトの名無しさん
NGNGiit は終了チェックしなくていいの?
0172デフォルトの名無しさん
NGNGISO/IEC 14882:1998
24.5.3 Template class istreambuf_iterator
-3
Note that in the input iterators, ++ operators are not equality preserving,
that is, i == j does not guarantee at all that ++i == ++j. Every time ++ is
evaluated a new value is used.
24.5.3.5 istreambuf_iterator::equal
-1
Returns: true if and only if both iterators are at endofstream, or neither is
at endofstream, regardless of what streambuf object they use.
0173デフォルトの名無しさん
NGNGreadとwriteで繰り返して操作した方が効率がいい。
0174164
NGNG>168
istreambuf_iteratorはInputIteratorで入力を一度しかトラバースできないので
advanceは使えないかと思います.
>170
実は作ってたんですが171さんの言うように終了判定を考えると
copy_nの利用は危なそうだなと思ってやめました.
>171
省略してました.実際やるとしたら
for(size_t i = 0; i < pos - offset && iit != istreambuf_iterator<char>(); ++i, ++iit, ++oit){
...
な感じでしょうか?
>173
試してみます.
0175デフォルトの名無しさん
NGNG完全な独学で勉強したのでかなりトンチンカンなことを言っているかも知れませんが、自分なりに努力をしたのでお願いします。
前にシューティングアルゴリズムマニアックスという本を買ったのですが、
http://www.amazon.co.jp/exec/obidos/ASIN/4797327316/249-0856311-3939535
この本についてくるプログラムソースは弾、自機、背景、などを違う.cppファイルに記述しています。
しかし、コンパイルすると一つのゲームとしてビルドされます。
ヘッダーファイルであればincludeの記述を行うことでインクルードされることは分かるのですが、cppファイル同士、それも種類ごとに分けて記述したcppファイルを一つにするにはどのようにすれば良いのでしょうか?
一つのファイルに記述されたプログラムを順番に分割するのであれば、分かるのですが、このようにプログラムを並べたのでは同時にプログラムが処理されてしまうのではないのでしょうか?
多分かなりとんちんかんのことを言っていると思います。
どうしても一つのプログラムをいくつものファイルに分割して記述する方法が分かりません。
0176デフォルトの名無しさん
NGNGまず、ソースファイルは必ずしも分割して書く必要はない。しかしながら、あまりにも
1つ1つのソースファイルが大きくなると、コンパイルに時間がかかるし、少し変更した
だけでも全体をコンパイルしなおさなければならなくなる。それに、大きなファイルの
内容を管理するにしても、人間の頭にも限界があるし、普通は1人ですべてのコードを
書くわけでもない。だから、ソースを分けるという考え方が出てくる。さて、当然複数の
ソースをコンパイルすると複数のオブジェクトファイルが出来るわけだが、これらは
そのまま実行されるのではなく、リンカという別のプログラムに通され、結合される。
すると、ここでやっと1つのプログラムファイルが出来上がる訳だが、複数のオブジェクト
ファイルに対して複数の同時実行が行われるわけではない。たとえば、a.objという
オブジェクトファイルにfoo()という関数があり、これをb.objの中から呼び出していると
する。複数のオブジェクトファイルがあるから当然直接呼び出せない。これを解決する
役割を担うのがリンカ。こういう複数のオブジェクトファイル間の関数等の呼び出しを
解決するのが仕事。すると、結果的にファイルは1つになる(ダイナミックリンクは除く)
でしょう?
0177デフォルトの名無しさん
NGNGいきなりゲーム開発の本なぞ読まずに
まずC/C++の入門書をきっちり仕上げろよ。
それをやってれば>>175の質問は出てこない。
ルールもろくに覚えてないうちに定石集買って
読んでも、そら分からんだろう。
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNGGUI環境って何のこと?ネタじゃないよ。。
0180デフォルトの名無しさん
NGNG0181Ruby!!!!!!!!
NGNG0182デフォルトの名無しさん
NGNGで、GUI環境はどこが重要なの??
0183デフォルトの名無しさん
NGNG鼠が画面上で動き回ることが出来る。
0184デフォルトの名無しさん
NGNG無かったら、動き回れない…っていうこと?
0185175
NGNG家にある本ではさらりとしか解説されてなくよく分からないです。
MSDNも見ましたが余計にさっぱり分かりません。
0186デフォルトの名無しさん
NGNG>>172の
>Every time ++ is evaluated a new value is used.
この文ってTYPOですか?
おれっちの脳内じゃ
Every time ++ evaluated, a new value is used.
こちらの方が正しいような気がするんだけど。どう?
0187デフォルトの名無しさん
NGNGエロDVDが見れる。ヌケル。そして、彼女要らず。
0188デフォルトの名無しさん
NGNGj2sdk-1_4_1-windowsi586をインストールし、パスの設定を行った後に、サンプルアプリを動かそうとしたのですが、ダメでした……
「%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;C:\Program Files\pcdNavi\bin;C:\Program Files\Fujitsu\sa\dll;;C:\Program Files\Sonic\MyDVD」
がパスの変数値の最初の設定でした。
この末尾に「C:\j2sdk1.4.0_01\bin」と付け足したのですが、サンプルは動かないんです……
0189188
NGNG0190デフォルトの名無しさん
NGNGevaluateするのは誰?
0193デフォルトの名無しさん
NGNGリンカについては知らんけど、>>177が言うように、C/C++の入門書で、基本をきっちりしたほうがいいよ。
俺も完全独学で、最初いきなりDirectXから入って、参考書のサンプルいじくって一応は動いてたど、
やっぱ不安なので猫さんのとこで基本勉強したら解るようになった。
いや、俺も昔分割コンパイルに疑問持ってたから、人事に思えなくてw
0194デフォルトの名無しさん
NGNGEvery time ++ is evaluated, a new value is used.
のコンマが省略されたんだと思われ。
0196デフォルトの名無しさん
NGNG//行列の表示
#include <stdio.h>
void show(int s[][3],int row);
void main(){
int a[][3]={10,20,30,40,50,60};
int i,j,row;
show(a,2);
void show(int s[][3],int row);
for(i=0;i<row;i++){
printf("| ");
for(j=0;j<3;j++){
printf("%d ",a[i][j]);}
printf("|\n");}}
色々試したのですができませんでした、原因をお教えいただけませんか。
0197デフォルトの名無しさん
NGNGvoid文って何?
一見めちゃくちゃなコードに見えるけどvoid文が何なのかわからないのでうかつにつっ込めない・・・。
0198デフォルトの名無しさん
NGNG0199196
NGNGとかって聞いたのですが。
・・・滅茶苦茶なのかorz
0200デフォルトの名無しさん
NGNGもうむちゃくちゃすぎ。
想像で補って書いてみたが、
こういうことをしたかったのか?
#include <stdio.h>
void show(int s[][3],int row)
{
for(int i=0; i<row; i++)
{
printf("| ");
for(int j=0; j<3; j++)
printf("%d ", s[i][j]);
printf("|\n");
}
}
int main(void)
{
int a[][3] = {10,20,30,40,50,60};
show(a, 2);
return 0;
}
0201デフォルトの名無しさん
NGNG関数をラベルのように定義するその書き方は何かのコンパイラの拡張?
#include <stdio.h>
void show(int s[][3],int row);
void main()
{
int a[][3]={10,20,30,40,50,60};
show(a,2);
}
void show(int s[][3],int row)
{
int i,j;
for(i=0;i<row;i++)
{
printf("| ");
for(j=0;j<3;j++)
{
printf("%d ",s[i][j]);
}
printf("|\n");
}
}
void文って、
void()
のこと?
0202デフォルトの名無しさん
NGNGヒント:以下はごく自然なCのコード。
$include <stdio.h>
void show_string (const char *str);
int main (int argc, char *argv[]) {
show_string("hello.");
return 0;
}
void show_string (const char *str) {
puts(str);
}
0203デフォルトの名無しさん
NGNGそういうエラーって{}がちゃんとなってなかったりしても出る
ガンガレ!
0204デフォルトの名無しさん
NGNGどうみても>>196はそれ以前の問題だろ
0205デフォルトの名無しさん
NGNG関数内関数を使えてたね。
# あと,よくわかんない反復子の仕組みもあったし。
# 今で言う「イテレータ」とはなんかちょっと違う概念だった気もするけど。
0206デフォルトの名無しさん
NGNG> $include <stdio.h>
(´ι_`)
あげあしでスマソ。
マジでこれで悩む初心者とかいたらいけないので念のため指摘。
0207デフォルトの名無しさん
NGNG関数内関数ってPASCALみたいな感じ?
0208デフォルトの名無しさん
NGNG「文」という言葉の使い方が変。
式と文と関数はそれぞれ別の概念だ。
「戻り値 void の関数を書いたのですが」あたりじゃないかと思われ。
で、関数の定義の仕方が滅茶苦茶。
・関数の中で関数の定義はできない(独自拡張で可能な処理系もあるが)。
・2回目の void show(int s[][3],int row); ←のセミコロンは何よ?
0209デフォルトの名無しさん
NGNG自分でやっといてワラタ
っていうかもう寝ようw
>>207
うん。細かい仕様は忘れたけど,便利だった。
High-C は C コンパイラのくせに,C++ みたいに変数をどこででも
宣言できたりしてた。
0210196
NGNGありがとうございます、もう一度一からやってみます。
0211デフォルトの名無しさん
NGNGほかのところが間違いまくってる。
0212デフォルトの名無しさん
NGNG引数なんかC99風の最新規格を使っときながら
なんでそんなに滅茶苦茶で異常なコードを書いてしまうのかわからん。
0213デフォルトの名無しさん
NGNGEXEの設定を弄くることは出来ますか?
例えばあるEXEが起動するとき「開始します」とかの表示を「開始するぞゴルァ」
みたいなのは出来るんですか?
またEXEを弄くるソフトは何ですか?
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNG板違い。
そういうソフトを作りたいのならこの板でかまわんけど。
0217デフォルトの名無しさん
NGNG文字列がリソースとして定義されているならResource Hackerかな。
でなけりゃ資料を見ながらバイナリエディタで書き換えるかOllyDBGとかのデバッガつかうか。
しかし素人にはオススメできない。
0218デフォルトの名無しさん
NGNGありがとうございました
0219196
NGNG実行してみたら、やりたい通りになってました、ありがとうございます
>201
voidを使って行列を書いてみる、というのが課題でして・・・
voidの使い方とか、webで調べたんですが、何か勘違いしたヨウで・・・
>202
charというのはまだちょっと分らないので、あとで調べてみます
>208
セミコロンは間違えて付けてしまったものです、すいません
0220デフォルトの名無しさん
NGNGnew で確保したメモリ領域は、delete で開放しろと、
いろいろな解説ページで見たのですが、
開放しないままプログラムが終了すると、どうなるのでしょうか?
簡単なプログラムを作って試してみたところ、
プログラムが終了した時点で、メモリは開放されているようなのですが、
プログラム終了時にわざわざ delete でメモリを開放する処理を入れる必要はあるのでしょうか?
0221デフォルトの名無しさん
NGNG開放しないと、メモリリークが起こる。
そうなるとフリーズしたり、いろいろ障害がでる、と聞いてる。
newだけがメモリを確保するのではなく、グローバル変数などもメモリを確保している。
プログラムが終了したときに開放されたのは、そういった変数だと思う。
って、俺もちょっと曖昧なので他の人、修正・補足お願い。
0222デフォルトの名無しさん
NGNG「malloc()して(プログラム終了時に)free()しない」、なら、百歩譲って許せなくもないが、
deleteはメモリの開放だけでなく、デストラクタの実行も担っているから、
絶対に省略はあり得ない。
0223デフォルトの名無しさん
NGNG自動で解放してくれるけどね。
でもいちいち
「このオブジェクトは delete しなきゃいけない。
このオブジェクトはただのメモリの塊だから delete しない。
こっちのは……どうだっけ?」
とか考えるの('A`)マンドクセ
0224233
NGNG要するに、delete が必要か不要かを考えたり
あまつさえ省略しようと企んだりするのは
激しく徒な遠回りだよって事。
0225223=224
NGNGつーか盛れが抱えてる問題が解決しねーし。イラつく。もう寝ようっと。
0226デフォルトの名無しさん
NGNGデストラクタの実行を無視すれば、
小規模なプログラムなら終了時にまとめてメモリ解放
でもなんとかなると思うが、ある程度の規模になると
いらないデータがメモリを占有しつづけるのは非効率的
になってくる。
GCが信頼できる環境でないかぎりは解放するのが無難。
普通のプログラマなら「開けたら閉める」
ってのは普通の感性じゃないかなぁ。
0227デフォルトの名無しさん
NGNG>voidを使って行列を書いてみる、というのが課題
行列(を格納した配列)をvoidポインタで渡すようにして
ルーチンを汎用化するって意味ではないかと思った。
だとすると >>196 はまったく的外れ。
行列の幅を固定しちゃってるし。
おそらく課題はC言語で書くことだと思うけど、
念のため補足しておくとCとC++では作法が結構違う。
C++ならそれの実現のためにvoidポインタを使うべきではない。
0229デフォルトの名無しさん
NGNG終了時のdeleteなんか時間のムダ
もし省略するとシステムにダメージを与えるような
処理をデストラクタ内で行なっているならば、それは設計ミス
そういうたぐいの後始末は専用の関数かなんかにして
シグナルハンドラで呼び出すのが正しい
だから必要なdeleteなどなく、何も考えずに終われって事だ
0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNGfloat a = 1.23456f;
int b;
b = *((int*)&a);
みたいなことを、変数aを使わずに b = ... のように行いたいのです。
int は float とデータサイズは同じと考えていただいて結構です。
0232デフォルトの名無しさん
NGNG0234186
NGNG186そのままだった。はずかしいーーー。
0235231
NGNGありがとうございます。
すみませんが、もう一つ質問がありまして、
struct {
int type;
union {
int idata;
float fdata;
} data;
} tdata;
tdata sample_data[] = {
{ 1, 20 },
{ 2, 3.456f },
{ 1, 123 },
:
};
のように初期化したいのです。
メンバ"type"は、メンバ"data" の型を表し( 1ならint、2ならfloat など)、
メンバ"data"には int あるいは float の値が入ります。
union を使用すると、初期化時には最初の型(この場合、idataの型=int)で初期化せねばならないようで、
上のリストのように初期化することができず、また、>>232 のような方法でも書くことができません。
どうしたらよいのでしょうか。
0236デフォルトの名無しさん
NGNG値は int i; *(float*)&i=,3.456f; printf("%d",i) ってやって調べろ
0237デフォルトの名無しさん
NGNG#include <stdio.h>
#include <string.h>
int main(){
char str[]="信長<><>2004/10/18 12:42:45<><>はじめまして<><>カッコイイHPですね。\nこれからちょくちょく遊びに来ますんで。\nよろしく。";
char sp[]="<><>";
char *r=NULL;
r=strtok(str,sp);
while(r != NULL){
printf(">>%s\n",r);
r=strtok(NULL,sp);
}
return 0;
}
char sp[]="<><>"の部分を
char sp[]="<>"にしても、char sp[]="k<>"にしても、同じ結果になります。
どうしてでしょうか?
0238デフォルトの名無しさん
NGNG0239235
NGNGやはりそうするしかないですかねー。そういうマクロでもあれば良いんですけど…。
あるいは、逆に全部 float で書いて、使うときに int にキャストとか。
(辻褄はあうけど、明らかに曲がったやり方だと思う)
printfするにはデータ量が膨大なので、とりあえず、前処理するツールを作って
それを通して吐き出させようかと思います。
(といっても、ホントに *.*f を 0x???????? に書き換えるだけなので、
そのために一段階増えるなんてもったいない気がしてなりませんが)
なにか他に方法があれば教えてください。
0240デフォルトの名無しさん
NGNGchar sp[]="<><>\n";
こーゆーこと?
0241デフォルトの名無しさん
NGNGmanなりhelpなりでstrtokをちゃんと調べれー
第二引数は「デリミタ文字群」だ
0242デフォルトの名無しさん
NGNGリダレクト使えば
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNGバグを単離して同定することすら難しくなってきた
デバッグするときのこつを教えてください
再現性のあるバグなら予想はつくんだけど
なかなか再現性が見いだせないバグはやっかいだね…
0245デフォルトの名無しさん
NGNG作成していますが、その内部で、
printf("%I64d\n", i64);
が表示できず、そのままI64dと表示されます。
i64は「__int64」で定義しています。
これを64bit値で正しく表示するにはどうすればいいですか?
あと、演算結果を__int64の型の変数に入れたにもかかわらず、
2の31乗を越えた値がマイナスになります。これはどうしてですか?
0246デフォルトの名無しさん
NGNGstd::auto_ptr<int> p2(p);
std::auto_ptr<int> p3(new int);
std::auto_ptr<int> p4(p3.release());
VC6付属のSTLではp2, p4に所有権が移動するだけでポインタ値は残るのですが
STLPortではp, p3のポインタ値が空になります。
どちらの振る舞いが正しいのでしょうか…
0247デフォルトの名無しさん
NGNG>あと、演算結果を__int64の型の変数に入れたにもかかわらず、
>2の31乗を越えた値がマイナスになります。これはどうしてですか?
intで計算してるんだろ。__int64に格上げしてやれ。
0248デフォルトの名無しさん
NGNGauto_ptrの仕様でもよみな。
ちなみVC6のC++の挙動を正しいと思わんことだ。
0249246
NGNGttp://www.hey-to.net/ML-archive/vcppML/2000/msg07069.html
0250デフォルトの名無しさん
NGNG0251245
NGNG明確に(__int64)でキャストは行っているのですが・・・。
おそらく__int64で定義されているにもかかわらず、32bit
という扱いにされていると思うのですが・・・。
0252デフォルトの名無しさん
NGNGI64の所も含めて、小細工せずにコピペで
0253デフォルトの名無しさん
NGNG可変引数を持つ関数hoge(char * szBuf, ...)があります。
hoge内からさらに可変引数を持つサブルーチンhogehoge(int iCnt, ...)をコールします。
hogeに渡された可変引数すべてをそのままhogehogeに渡すにはどのように記述すれば
よいのでしょうか?
ちなみにhoge内では可変引数の個数や型などはわかりません。hogehoge内で判明します。
hoge内でva_list型としてva_arg()で値を取得すればいいかと思い以下のように記述
してみましたが、可変引数の個数が複数になると2個目以上が取得できませんでした。
hoge(char * szBuf, ...)
{
va_listargs, args2;
va_start( args, szBuf );
args2 = (va_list)va_arg( args, va_list );
//中略
hogehoge( iCnt, args2 );
va_end();
}
0254デフォルトの名無しさん
NGNGhogehoge(int iCnt, va_list); を作る
しか思いつかないなぁ。
つかhogeで可変引数の詳細がわからないと
hogehogeにどれだけ引数を積めばいいかわからないと思うんだけど。
0255デフォルトの名無しさん
NGNGunion初期化でintが必要でfloatは使えないと言うなら、
別にfloatの配列を置いてそこから引っぺがしたら?
こんな感じかな?
static const float sF[] = {3.456f, 3.2f};
struct {
int t;
union {
int i;
float f;
} u;
} sS[] = {
{1, 20},
{2, *(int *) & sF[0]},
{1, 123},
};
0256245
NGNGこんな感じになります。
CUR_SP = (__int64)hlen + rlen * (RecNo - 1);
#ifdef DBG
wsprintf(DBG_BUF, "(%I64d)\n", CUR_SP);
DbaDebugWrite(DBG_BUF);
#endif
CUR_SP自体が2の31乗を越えた場合には、
CUR_SPを31bit右シフトした結果を表示させたら
-1になりました。
0257デフォルトの名無しさん
NGNGrlenとRecNoがintというオチだと予想
0258デフォルトの名無しさん
NGNG0259237
NGNG>>240
えっと、すいません、よく分かりません。
>>241
tp://www.linux.or.jp/JM/html/LDP_man-pages/man3/strtok.3.html
tp://www.shibu.jp/cppreference/stdstring_details.html#strtok
を参考にしてみたのですが、"デリミタ"というのがよく分かりません。
>>243
kがないのになぜ分割されるのでしょうか?
0260デフォルトの名無しさん
NGNG辞書引け: delimiter
第二引数で指定した「文字列」で分割するのではなく、
第二引数で指定した「文字のいずれか」で分割する。
つまり char sp[]="k<>" なら 'k' か '<' か '>' で分割。
0261デフォルトの名無しさん
NGNGchar * section = new char[strlen(str)];
unsigned position;
sscanf(str, "%[^<>]%n", section, & position);
とでもしとけ。
0262デフォルトの名無しさん
NGNG('A`)マンドクセ
boostのsplitでも使っとけよ。
0263デフォルトの名無しさん
NGNGはなし飛びすぎYO!!
0264デフォルトの名無しさん
NGNGこんな場合はどうすればわかりやすくなるんでしょうか?
0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNGそのコードを捨てる。
↓
2ch に問題をうpする。
↓
暇人が美しいコードに変換してくれる
↓
ウマー!
0267デフォルトの名無しさん
NGNGswich文を使う
0268デフォルトの名無しさん
NGNG状態遷移テーブルを作る。
0269デフォルトの名無しさん
NGNGそれはちょっとできないですw
>>267
いままでifとforしか使ったことなかったので
swich文も使ってみます
>>268
難し用語ですね
検索してみましたけどなかなかわかりやすく解説してくれてるところがないみたいです
アドバイスありがとうございました
0270デフォルトの名無しさん
NGNG条件を洗い出すと、単純な表に書ける場合がある。
その場合はその表を配列として実装すれば複雑な条件を緩和できるかもしれない。
0271デフォルトの名無しさん
NGNG0272デフォルトの名無しさん
NGNG演算子じゃダメなの?
0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNG左右反転なんですが
0275デフォルトの名無しさん
NGNG正解。wsprintfはI64非対応。245はsprintf(か_stprintf)にしろ。
0276デフォルトの名無しさん
NGNGはよそういえや。で、標準関数にはそんなもんない。
0277デフォルトの名無しさん
NGNG久々にカルノーマップかいてたら吐き気がしてきた。
スパッとできるトリッキーなコードとかありそうなんだけどなぁ
0278デフォルトの名無しさん
NGNGそんなの、表引きでええやん。
0279デフォルトの名無しさん
NGNG1バイトとは限らないぞ32ビットだったりした日には…
0280デフォルトの名無しさん
NGNG4回に分ければいいだろ。
0282デフォルトの名無しさん
NGNGxor使ったと思ったんだけど。
0283デフォルトの名無しさん
NGNGswap( int *a, int *b )
{
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
0284デフォルトの名無しさん
NGNG例えばこんな感じ
int* p = new int[0];
VC6SP6ではNULL以外の値が返ってきましたが
本当に正しいのかどうか…
0285デフォルトの名無しさん
NGNGA zero-sized array is legal only when the array is the last field in a struct or union
0286デフォルトの名無しさん
NGNG5.3.4 - New
-7- When the value of the expression in a direct-new-declarator is zero,
the allocation function is called to allocate an array with no elements.
The pointer returned by the new-expression is non-null.
[Note: If the library allocation function is called, the pointer returned is distinct from the pointer to any other object. ]
0287237
NGNG>>260
それでやっとstrtokの結果が理解できました。
その中のどれかの文字と一致するということは、
Perlでの正規表現だと、
[k<>]
みたいな感じですよね。
Perlでいうsplitのような処理をするにはどうプログラムを組んだらいいのでしょうか?
splitのような処理をしようとして検索していたらstrtokにたどり着いたのですが。
>>261
strtokの処理の代わりにそれを入れてみましたが、何も表示されませんでした。
>>262
boostを検索してみたのですが何かダウンロードしなきゃいけないみたいですね。
boostのをダウンロードしてやるのが一般的なんでしょうか。
0288デフォルトの名無しさん
NGNG0289284
NGNGそれは
struct A
{
char hoge;
int hage[0];
};
とかそんな状況の事じゃないでしょうか?
>>286
「library allocation function」が何を指しているのかわかりませんが大丈夫そうですね。
ありがとうございました。
0290デフォルトの名無しさん
NGNGMore Exceptional C++ Item 29に載ってるぞ。
0291デフォルトの名無しさん
NGNG0292262
NGNGどちらかというとジョークっぽいニュアンスの発言ですた。
boostを使うのはちょっと大げさすぎる。
やっつけ仕事としてならsplitを使うのもアリだと思うけど、
普通は >>288 の言うように strstr でループさせる。
0294デフォルトの名無しさん
NGNG自分への投資を惜しむな
0295デフォルトの名無しさん
NGNG0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNG0298( _ 。。) _ バタ。 ◆eJlUd9keO2
NGNGOCIBindByNameを利用して
OUT引数から文字列の結果を受け取ろうとしているのですが
SP側でそのOUTの変数がNULLの状態になっていると
OCIExecuteに失敗してしまいます。
(もちろん、何かしらの値を代入すれば正しい結果を取得できています)
それと確認を取っていないのですが
オールスペースの文字列がORACLEではNULL扱いになるとかならないとか
(これはココじゃなくて ORACLEかDB関係のスレを探すべきかな)
C言語からのOCI関係の参考書・参考ページを1週間程探してみたのですが
ヴァージョンが低かったり、本家PDFのコピペだったりと目的の情報にあたりません。
上記、どなたかお力添え願います。
0299デフォルトの名無しさん
NGNG0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNGそれで>>299が分かる人だったら
こんな質問しないでしょ?
もうちょっと考えろよ
0302デフォルトの名無しさん
NGNGそれで>>877が分かる人だったら
こんな質問しないでしょ?
もうちょっと考えろよ
0303デフォルトの名無しさん
NGNG大抵のコンパイラはDオプションで指定できる。
0304デフォルトの名無しさん
NGNGそれで>>300が分かる人だったら
こんな回答しないでしょ?
もうちょっと考えろよ
0305デフォルトの名無しさん
NGNG0306デフォルトの名無しさん
NGNGクラス CSuper を親クラスに持つ2つのクラス CChildA, CChildB があったとして、
イメージとしては、以下
CSuper* array[2];
array[0] = new(CChildA);
array[1] = new(CChildB);
のように、同じ基本クラスを持つ複数の型の要素を持つ配列を作成したいのですが、
もちろんこれでは、CChildA のメソッド m を
array[0]->m のように呼び出すことはできませんし、
環境によるとコンパイルエラーになるかもしれません。
このような構造を実現できる方法はないでしょうか?
0307デフォルトの名無しさん
NGNGAだけでBには持たせたくないのなら、諦めてdynamic_cast。
でなきゃboostにそんな構造があったような。
0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNGありがとうございます。
boost って言葉が初耳でしたので調べてみます。
もし無理なら諦めてキャスト……。
0311235
NGNGそれだと、floatデータ一つにつきsizeof(int*)バイト分のデータが増えることになってしまいますよねー。
理想としては、一つの配列を、先頭からバイナリーで別ファイルにしたいので、
配列内にポインタが含まれたり、別の配列が必要になったりすることは避けたいのです。
結局 >>239 の方法でやってますが、やっぱり面倒…。
0312デフォルトの名無しさん
NGNGサンプルってありませんでしょうか。
0313デフォルトの名無しさん
NGNG何がしたいのか具体的に書かないと誰もまともに応えられないよ。
編集処理のプログラムのサンプルなら、探せばあると思う。
0314デフォルトの名無しさん
NGNGfflush関数を使ったのですが、fflus関数はダメと言われました。
他にstdinをクリアする方法を教えてください。
0315デフォルトの名無しさん
NGNG断れ!
0316デフォルトの名無しさん
NGNG読めなくなるまで空読み。
0317デフォルトの名無しさん
NGNG0318デフォルトの名無しさん
NGNGヽ( ,_ノ`)ノ 残念 おいなりさんだ
へノ /
ω ノ
>
0319245
NGNG>>275
ありがとうございます。確かにsprintfに変更したら成功しました。
あと、64bit型の変数に入れる場合の演算は、変数ごとにキャストを
かけないとダメってことですかね?
通常のようにあとからまとめてキャストというのは失敗するようで。
0320デフォルトの名無しさん
NGNGコード書け。
言ってる意味がわからん
0321デフォルトの名無しさん
NGNG>CUR_SP = (__int64)hlen + rlen * (RecNo - 1);
RecNo, rlen, hlenがintだとすると
演算の優先順位の関係で rlen * (RecNo - 1) はint同士の減算・乗算が行われ
hlen との加算で初めて__int64に格上げされる。
全部__int64で計算したければ
CUR_SP = hlen + rlen * ((__int64)RecNo - 1);
とする。
0322デフォルトの名無しさん
NGNGclass A //継承元
{
(略)
};
class B:A //継承先
{
(略)
};
という関係のクラスがあるとします。
また、これとは別に
void Function(A *a);
といったような、Aクラスを引数にする関数があります。
このとき、Aから派生したBクラスのオブジェクトを
Function関数に渡す方法はありませんでしょうか?
#チラっと見た限りでは、Javaではできるっぽい
とりあえず、ちょっぴぃ脳みそで考えてみたところ、
・Bクラスの中にAを含める(継承ではなく)
・Function関数をAクラスのメンバ関数にする
くらいかなぁ?と。
諸先輩方、何かアドバイス等あればお願いします。
0323デフォルトの名無しさん
NGNG{
};
0324デフォルトの名無しさん
NGNG>Function関数に渡す方法はありませんでしょうか?
これが普通に出来なきゃ大惨事だろうが
0325デフォルトの名無しさん
NGNGd3dxof.lib
というリンクライブラリは何処でダウンロードできますか?
d3dxof.libを検索にかけて探してみたのですが
見つかりませんでした。
0326デフォルトの名無しさん
NGNGDirectX SDKではないか
0327325
NGNGありがとうございました。
さっそくダウンロードしてみます。
0328デフォルトの名無しさん
NGNG自分で何を作ってるのか把握できてるのか…?
0329デフォルトの名無しさん
NGNG管理クラスでそれらをvectorで管理しようと思ってるんですが
管理の仕方ってポインタをvecterで管理するのと
実態で管理するのとどっちがカッコいいの?
あと、メンバ変数でクラスを持ちたいときも
ポインタで持ってるのと
実態で持っているのどっちがカッコいいの?
C++な人おせーて
0330デフォルトの名無しさん
NGNGポインタでやるしかないんでは?
貴方の「カッコいい」の基準が分からないのでなんとも。
ポインタだとdeleteとかの手間があれこれあるから、
auto_ptr、スマートポインタ使うとか。
0331デフォルトの名無しさん
NGNG管理クラスって言い方が悪かった(´Д`;)
データクラスをvecterで持つ場合、ポインタがいいのか実態がいいのか?
って事です
どっちがカッコイイ?←C++で一般的にはどっち?
0332デフォルトの名無しさん
NGNGvector内のポインタにnewして追加時もnewして要素取り除く時はdeleteして…
って手間を考えればインスタンスを突っ込んどく。
0333デフォルトの名無しさん
NGNG作成時に new は仕方ないけど、
vector が消えたときに自動的に delete してくれるような方法ってないの?
0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNG0336デフォルトの名無しさん
NGNG0337デフォルトの名無しさん
NGNG0338デフォルトの名無しさん
NGNG0340デフォルトの名無しさん
NGNGそれともコンストラクタでnewしてポインタ持つほうがいいかね?
どっちがカッコいい?C++な人おせーて
0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNG使い分けはどのように?
ってかどのように使い分けてます?
0343デフォルトの名無しさん
NGNGデメリット思い付かないなら全部実体で持ってろ。
0344デフォルトの名無しさん
NGNG0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNGテキストファイルを更新する関数を作りたいと思います。
この関数は、3行目という数値と、更新文字列を引数としてを与えると、
オープンしたテキストファイルの3行目を更新文字列で置換え=更新する
という仕組みです。
この時、fopen(),fgets(),fputs()を使用して上記の処理を行うとして、
3行目を更新するという時には、"r+"モードでファイルをオープンし、
3行目までfgetsで読み込んでから、fputs()でおもむろに更新するという
手法でよろしいのでしょうか?
任意の行を更新するという手法がいまひとつ理解できません。
よろしければ教えていただきたいのです。すみません。
0347デフォルトの名無しさん
NGNGビットマップのロードの仕方がわかりません
何か良い方法は無いでしょうか?
0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNG置き換え後もサイズが変わらないのならそれでいいと思うけど。
0350デフォルトの名無しさん
NGNG0352デフォルトの名無しさん
NGNGファイル開く→ファイルサイズ分のメモリ確保→ファイルサイズ分読み込む→ファイル閉じる
0353デフォルトの名無しさん
NGNG0354デフォルトの名無しさん
NGNG0355デフォルトの名無しさん
NGNG0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNGの一番したのをやっているのですが、ビルドするとファイルを開けませんと出てしまいます。
どうすればいいのでしょうか?
ソフトはVisual C++.net2003です。
初歩的ですみませんorz
0358デフォルトの名無しさん
NGNG>#include <iostream.h>
#include <iostream>に変更
0359デフォルトの名無しさん
NGNGusing namespace std;
をmain関数の中に入れるかグローバル空間に記入しといて。
0360デフォルトの名無しさん
NGNG大嘘を書くな、大嘘を。
0361デフォルトの名無しさん
NGNG根拠は?
0362デフォルトの名無しさん
NGNGのシステムコールを使うとバグるんですが
32bitコンパイラでDOSのビデオモードの
変更とかどうやってやるんですか?
教えてください、お願いします。
0363デフォルトの名無しさん
NGNG>346をよく読め。3行目までを読み込んでから3行目を書けるわけが無いだろう。
0364デフォルトの名無しさん
NGNG構造体のような初期設定リストによる初期化は出来ないと聞きました。
このような場合、どのように初期化するのがスマートでしょうか。
クラスとは別に代入用テーブルを作って、for文なり何なりで1個ずつ代入?
0365デフォルトの名無しさん
NGNG【std::vector<>を使って1つずつ追加していく。】
std::vector<foo> bar;
for(int i = 0; i < N; ++i) bar.push_back(foo(hoge(i)));
とか。
0366デフォルトの名無しさん
NGNGmain()
{
printf("INT");
}
結果は10でなくINTになってしまいます。
このように、""で囲まれたマクロを展開する方法を教えてください。
0367デフォルトの名無しさん
NGNG""で囲まれた部分は文字列リテラルなのでマクロ展開の対象になりません。
0368364
NGNG* * * 「猫でもわかる」を読んでいます。しばらくお待ちください * * *
なるほど。
引数に対応した番号の、foo型のオブジェクトを返す(正確にはキャストですが)
関数hogeをどこかで用意しておいて、
それをvectorで順番に格納していくってことでしょうか。
どちらにせよ、別に用意しておいて代入するのが初心者には一番分かりやすそうです。
ありがとうございました。
#のちのちのことを考えると、ソースに直接書かないで
#外部テキストファイルでも読み込もうかしら…?
0370デフォルトの名無しさん
NGNG""で囲まれたマクロを展開する方法は無いです。
ですが、マクロ展開の結果を""で囲むことはできます。
0371デフォルトの名無しさん
NGNG不可能ということですね。
わかりました。
ありがとうございました。
0372デフォルトの名無しさん
NGNG#define STR2(x) #x
#define STR(x) STR2(x)
#define INT 10
main()
{
printf(STR(INT));
}
一応、これで代用できるけどスマートじゃない気がする。
0373デフォルトの名無しさん
NGNGprintfのフォーマット指定をするところに数字を使いたかったのですが、
どうも数字を直接書くよりはマクロで定義していつでも簡単に直せるようにしたほうがいい、
というのを見かけたもので、そうしたかっただけです。
わざわざありがとうございました。
0374365
NGNG意図したところはそれとは少し違ったんだけれども、その方がスマートかな。
そっちが書いた通りのコードは
foo hoge(int); // foo型のオブジェクトを返す関数hoge
…
std::vector<foo> bar;
for(int i = 0; i < N; ++i) bar.push_back(hoge(i));
ちなみにfoo(hoge(i))はキャストとは違う。同じように見えるかもしれないけれども、
これはiに対応してhogeが返した何かをコンストラクタ引数にして構築したfooの
一時オブジェクト。
0375デフォルトの名無しさん
NGNGこういうことがしたいんじゃないのか?
#define INT 10
略
printf("hogehogeINTfugafuga");
↓
printf("hogehoge"INT"fugafuga");
0376デフォルトの名無しさん
NGNGこういうことがしたいです。
int i = 100;
printf("%10d\n", i); → printf("%INTd\n", i);
0377デフォルトの名無しさん
NGNGこれを消したい場合どこの設定を弄ればstdafxファイルなしでコンパイル出来るようになるのでしょうか?
0378デフォルトの名無しさん
NGNGprintf("%*d\n", INT, i);
だったか?たしか。
0379デフォルトの名無しさん
NGNGプロジェクトのプロパティ→C/C++→プリコンパイル済みヘッダー
→プリコンパイル済みヘッダーの作成/使用 : プリコンパイル済みヘッダーを使用しない
0380デフォルトの名無しさん
NGNGできました。
ありがとうございました。
0382デフォルトの名無しさん
NGNG何を心配してるのか知らないけど、この際hogeはまったく関係ない。
# 単に説明をややこしくしてるだけ
0383377
NGNGところで、プログラムの最後でプリコンパイル済みヘッダーがあるとgetch()などをはさまない限り一瞬でプログラムが終了してしまいます。
プリコンパイル済みヘッダーがなれば、そんなことはないのですが。なぜなのでしょうか?
0384デフォルトの名無しさん
NGNGんなこたーない。プリコンパイル済みヘッダが無くても終わるときは終わる。
0385377
NGNGhttp://www.kumei.ne.jp/c_lang/intro/no_24.htm
をコンパイルしたところプリコンパイル済みヘッダをありでプロジェクトを作ると、「もうお金がありません! それではやめましょう」のところがほとんど表示されずに表示されてしまったのでそう思ったのですが。
どう弄ればプリコンパイル済みヘッダありでも最後に止まってくれるのでしょう?
0386デフォルトの名無しさん
NGNG大丈夫、プリコンパイル済みヘッダありでもなしでも普通は止まらない。
0387デフォルトの名無しさん
NGNG止まるかどうかは、デバッグ付き実行(F5)してるかデバッグ無し実行(Ctrl+F5)してるかの違い。
0388235
NGNG例えば、
#define HOGE(name)
というマクロを、
#define name (__LINE__)
int line_ ##name = (__LINE__)+1;
という2行分に定義したいのです。
0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNG#define name (__LINE__)\
int line_ ##name = (__LINE__)+1;
こういうこと???
0391388
NGNGようするに、#define によるシンボル定義と、それ以外の処理(なんでもいいです)を、
マクロ一つで済ませたいのです。
int now_line[] = {
#define FOO1 __LINE__
FOO1,
#define FOO2 __LINE__
FOO2,
#define FOO3 __LINE__
FOO3,
:
};
というようなこととかを、マクロでやりたいなと。
0392デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNGうえのリンク先のプログラムはL x M 行列 A と M x N 行列 B の積 C(Cは L x N 行列)
を求めるプログラムですが、これを
「行列Bを、行列Bの転置行列DとしてAとDの積を求める」プログラムにするには
どうしたらいいいか回答をお願いします。
0395デフォルトの名無しさん
NGNG0396デフォルトの名無しさん
NGNGclass ClassA
{
ClassB b;
};
class ClassB
{
ClassA a;
};
のように、2つのクラスが互いに相手クラスのインスタンスを持つとき、
この場合だと class A の定義の前に class B の存在を知らせる必要がありますが、
記述方法を忘れてしまいました。
調べようと思っても検索ワードが思いつかず……。ご指導お願いします。
0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNGって、ポインタじゃなくインスタンスか
またまた釣られちゃったぜー
0400デフォルトの名無しさん
NGNGありがとうございます。
その定義を入れると、ClassB b; の行で
Error: field 'b' has incomplete type
と言われました。
あれ……
0401396=400
NGNG0402396=400
NGNG0403デフォルトの名無しさん
NGNGそのBの中にはAがあって
更にAの中にはBがあって(無限再帰)
C++は良く分からないけど、無理だと思う、流石に。
ただ、Aの中にBそのものを入れないで、Bを示すポインタを含めるとかだけなら
特に矛盾は起きないと思う。
0404デフォルトの名無しさん
NGNG[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:winXP
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:今日中
[5] その他の制限:特に無し
C言語初心者です。課題で迷っています。
strcmp関数(文字列の比較する関数)と同じ働きをする関数αを作りたいですがどのように作れば良いのか分かりません。教えて下さい。
ちなみに関数の作り方の構文は知っています。
0405デフォルトの名無しさん
NGNGこぴぺがはげしいな。
int scmp(const char* l, const char* r)
{
if(*l==*r){
return *l=='\0' ? 0 : scmp(++l, ++r);
}else{
return *l - *r ? 1 : -1;
}
}
0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNGreturn (*l - *r)>0 ? 1 : -1;
こうか
0408デフォルトの名無しさん
NGNG{
}
みたいな文で条件文Aがすごく長い時に2行にわたって条件文Aを書きたい時はどうすればいいのでしょうか?
0409デフォルトの名無しさん
NGNG改行すればいい
if(ab==cd&&
ef!=gh){
ijk;
}
0410デフォルトの名無しさん
NGNG即レスありがとうございます
0411デフォルトの名無しさん
NGNG何度も似たような条件文が出てくるなら
条件文を切り出して関数化しておくのも手だぞ。
(マクロでもいいけどその場合は副作用に注意。)
0412デフォルトの名無しさん
NGNG改行コードだけを削除する方法がありましたらお教え願います。
0413デフォルトの名無しさん
NGNG0414デフォルトの名無しさん
NGNG0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNG0417デフォルトの名無しさん
NGNG0418デフォルトの名無しさん
NGNGa=1
で
error C2501: 'a' : 識別名を宣言するのに、型が指定されていません。
というエラーがでるんですけどなんでですか?
0419デフォルトの名無しさん
NGNG0420418
NGNG訂正
nt a;
a=1;
で
error C2501: 'a' : 識別名を宣言するのに、型が指定されていません。
というエラーがでるんですけどなんでですか?
と質問したかったんです、すいません
0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNGa=1;
でしょ。他の部分で間違ってるんじゃ無い?
0424418
NGNG解決しました
0426デフォルトの名無しさん
NGNGライブラリの使い方がわかりません。(win32 static library プロジェクト)
ヘッダファイルにクラス定義、ソースファイルにメンバ関数を分けて書きました。
使うときに必要なのはどのファイルで、どこに置けばよいですか?
コンソールアプリしか作りません。環境はMS-Visual C++6.0です。
0427デフォルトの名無しさん
NGNGDELETEDIRでフォルダの中にある全てのファイルを削除したいのですが
その中のファイルが読み取り専用のファイルがあると削除できないようです
これに対応するためにディレクトリの中にあるファイルの
全てのファイルを一度に属性をクリアさせてから実行したいのですが
フォルダ内のファイルを取得(リスト化)してまわすやり方がいまいちよくわかりません、どうすればいいのでしょうか?
すいませんが教えてください
0428デフォルトの名無しさん
NGNG環境は?
0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNGC++です
0431デフォルトの名無しさん
NGNGで、何を聞かれてるのかわからないか?
と思ったら釣りか?
0432デフォルトの名無しさん
NGNGわかりません
教えてください
0433デフォルトの名無しさん
NGNG必要なのは、libファイルとヘッダーファイル。
libはプロジェクトと同じ位置が無難かな。
ヘッダーは普通にincludeすればいい。
後は#pragma commentでlib追加してやる。
こんなカンジかな。
0434デフォルトの名無しさん
NGNGインタプリタっぽいのを作っていて
その言語内で例えば
str test[3]="asfd","fdsa","qwer";(strは文字列変数のことをさす)
のような宣言をされたときに
void* value=new char*[3];
のようにして
(char**)value[0]=new char[4+1];strcpy((char**)value[0],"asdf");
(char**)value[1]=new char[4+1];strcpy((char**)value[0],"fdsa");
(char**)value[2]=new char[4+1];strcpy((char**)value[0],"qwer");
みたいなことをやっています。
ここまではうまく行くのですが
・このあとどれかを削除してそこに新しい文字列を追加する
という作業を行うとアサーションとかいうダイアログがでてきてしまいます。
Debugモードでは駄目でReleaseモードだと難なく動くのです。
手順は
例えば真ん中の"fdsa"を削除して新しく"zxcv"という文字列を追加する場合は
delete [] value[1];
(char**)value[1] = new char[4+1];strcpy((char**)value[0],"zxcv");
という具合に最初とまったく同じなのですが駄目みたいなんです。
このアサーションというのはどういうものなのでしょうか?
他の変数を壊している可能性があるのでしょうか?
0435デフォルトの名無しさん
NGNG書き間違いの可能性が高いけど、ダメダメじゃん。
どれもみんなvalue[0]にコピーしている。
それから、アサーションはDebugビルドのみ有効でReleaseビルドでは起きない。
つまり、Debugビルドでアサーションを起こさないように充分デバッグしてからリリースしろと言うこと。
で、value[1]をdeleteしているのが恐らくアサーションの原因。
void *じゃなくてはじめからchar **にしておいたら?
0436デフォルトの名無しさん
NGNGdx/dt=c(x-x?/3+y+z)
dy/dt=(a-x-by)/c
よくわからないんです><
0437デフォルトの名無しさん
NGNG式の意味がよくわからんが t を少しずつ変化させながら、(x,y)を求めて
書いていけばいいんじゃまいか
興奮性ってのは良くわからんのでパス
0438426
NGNGありがとうございます。これだとソースを書くたびに
数行追加することになると思うのですが
標準ライブラリのように、#include<hoge.h>だけで
済むような方法はないのでしょうか?あればご教授ください。
たとえば猫Cではこのようにmainを書いているようですが・・・。
ttp://www.kumei.ne.jp/c_lang/intro/no_54.htm
0439デフォルトの名無しさん
NGNG簡単のため、インスタンスは全て public とします。
また、クラス定義の順番がバラバラでコンパイルエラーが出るのは、ここでは気にしないとします。
class CParent
{
CChildA a;
CChildB b;
void func() { a.func(this); }
};
CChildA
{
void func(CParent* p) { p->b.hoge=3 }
};
CChildB
{
int hoge;
};
のように記述すると、a が b のインスタンスにアクセスすることが出来ますが、
これはオブジェクト指向の概念からはずれてる気がします。
goto 文を避けるのが暗黙の了解になっているように、このような記述も避けるべきでしょうか?
それとも、このような記述は普通に行なわれているのでしょうか?
0440デフォルトの名無しさん
NGNG自分で公開して何言ってんだ
0441デフォルトの名無しさん
NGNGそのような記述はできません
0442デフォルトの名無しさん
NGNGプロジェクト>設定>リンクタブを開く
カテゴリ「一般」>オブジェクト/ライブラリモジュール内に、使用するlibファイルを追加。
0443c
NGNGchar型同士で足したり引いたりできるでしょうか?
また方法がありましたらお教えください。
0444デフォルトの名無しさん
NGNG普通にできる。
無論表現できる値の範囲は小さいけど。
0445デフォルトの名無しさん
NGNG鮮やかな矛盾っぷりに藁田
0446デフォルトの名無しさん
NGNGで調べると
a[1]の値が−83634454
b[1]の値が999
みたいな感じだったんですけど
なんで右辺と左辺の値が違うんですか?
0447デフォルトの名無しさん
NGNGもう少し詳しく
0448デフォルトの名無しさん
NGNGprintf()か何かで表示させたのだろうが、その行も書いてみろ。
0449デフォルトの名無しさん
NGNG0450デフォルトの名無しさん
NGNGHDC hdc;
TCHAR szBuf[32];
hdc = GetDC(hWnd);
sprintf(szBuf, "%d", a[1]);
TextOut(hdc, 10, 10, szBuf, lstrlen(szBuf));
ReleaseDC(hWnd , hdc);
みたいな感じです
0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNGそのプログラムでは>>446のようになるわけがない。
0453デフォルトの名無しさん
NGNGb[1]=999
a[i]=b[i];
HDC hdc;
TCHAR szBuf[32];
hdc = GetDC(hWnd);
sprintf(szBuf, "%d", a[1]);
TextOut(hdc, 10, 10, szBuf, lstrlen(szBuf));
sprintf(szBuf, "%d", b[1]);
TextOut(hdc, 20, 20, szBuf, lstrlen(szBuf));
ReleaseDC(hWnd , hdc);
もっと詳しく書くとこんなかんじです
0454デフォルトの名無しさん
NGNG> b[1]=999
> a[i]=b[i];
999の後にセミコロンがないんで、コピペミスってるとしても、
b[1]な時点でアホチン
0455デフォルトの名無しさん
NGNGa[], b[]の定義部分はどうなってる?
それからCHAR_BITとSCHAR_MAXとUCHAR_MAXの値は?
0456デフォルトの名無しさん
NGNGb[1]=999;
ですすいません
0457デフォルトの名無しさん
NGNGじゃなく、forループでひたすらb[ 1 ]に代入してどうするのと。
0458デフォルトの名無しさん
NGNGhoge(b);
struct z hoge(int b[])
{
int a[20];
for (i=0;i<9;i++)
b[1]=999;
a[i]=b[i];
}
こんな感じです
あと
nt b[20];
hoge(b);
struct z hoge(int b[])
{
int a[20];
for (i=0;i<9;i++)
b[1]=999;
a[1]=b[1];
}
にすると両方とも999になりました
0459デフォルトの名無しさん
NGNGb[1]=999;
a[i]=b[i];
}
↓
for (i=0;i<9;i++)
b[i]=999; // b[1]→b[i]にしる
a[i]=b[i];
}
これで満足?
0460デフォルトの名無しさん
NGNGプログラムを簡略化して書くとこうなっちゃったんです
0461デフォルトの名無しさん
NGNGあー、>>443と同じ人かと勘違いしていたよ。
原因はもうわかったろう?
0462デフォルトの名無しさん
NGNGfor (i=0;i<9;i++)
b[i]=999;
a[i]=b[i];
HDC hdc;
TCHAR szBuf[32];
hdc = GetDC(hWnd);
sprintf(szBuf, "%d", a[1]);
TextOut(hdc, 10, 10, szBuf, lstrlen(szBuf));
sprintf(szBuf, "%d", b[1]);
TextOut(hdc, 20, 20, szBuf, lstrlen(szBuf));
ReleaseDC(hWnd , hdc);
にしても
a[1]とb[1]の値が違います
0463デフォルトの名無しさん
NGNGすいません、まだわかりません
0464デフォルトの名無しさん
NGNGかっこつけろ
0465デフォルトの名無しさん
NGNGfor (i=0;i<9;i++) {
b[i]=999;
a[i]=b[i];
}
これでやってみろ。
0466デフォルトの名無しさん
NGNG{
b[i]=999;
a[i]=b[i];
}
HDC hdc;
TCHAR szBuf[32];
hdc = GetDC(hWnd);
sprintf(szBuf, "%d", a[1]);
TextOut(hdc, 10, 10, szBuf, lstrlen(szBuf));
sprintf(szBuf, "%d", b[1]);
TextOut(hdc, 20, 20, szBuf, lstrlen(szBuf));
ReleaseDC(hWnd , hdc);
こうですね
なんか焦って書き間違いが多くてすいません
0467デフォルトの名無しさん
NGNG↑ここに最低限症状が再現するソースを貼り付けてくれ。わけわからん
0468デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNG再現できるような例ができないのでいったん諦めます
みなさんレスありがとうございました
0470デフォルトの名無しさん
NGNG他人を巻き込んだんだから最後まで責任持ってがんがれ。
0471デフォルトの名無しさん
NGNGb[1]とa[9]、b[9]以外は値が代入されていない。
0472デフォルトの名無しさん
NGNGb[9]も代入されてない、当然a[9]も
0473デフォルトの名無しさん
NGNGどういうのを使えば勉強できますか?
今のところ、Borland C++ Compiler 5.5を使おうと思ってるんですがどうですか?
0474デフォルトの名無しさん
NGNG0475473
NGNG0476デフォルトの名無しさん
NGNGうん
0477デフォルトの名無しさん
NGNGもし、プログラミングを勉強するのであればVisualStudioなどを買うか、
Linuxでのフリーソフトウェアずくしの環境にするか、
どちらかでしょうね。
Linuxは慣れるとわりと便利な環境で、しかも無料で本格的な環境をそろえる
事ができますので、学生さんでしたら移行をお薦めします。
お金が有ればいろいろパッケージを買って環境をそろえるのも良いかもしれませんが。
0478473
NGNG作業が遅い自分は家で先に予習した方がいいのかな?と思ったんです。
で、家でC言語を勉強するにはどうすればいいのかさっぱりだったんで質問してみました。
基本的にパソコンさっぱりの学生なんで、設定とか複雑なのは頭混乱するんですが
超ド級初心者が一番手を出しやすいのはVisualStudioなんですか?
C++も後から手を出すと思うんですが、やっぱりC言語をやるなら
C→C++の順に勉強したほうがいいのでしょうか?
0479デフォルトの名無しさん
NGNG学生なら安く買えるよ。
ttp://www.microsoft.com/japan/msdn/student/premium/default.aspx
0480デフォルトの名無しさん
NGNGさっさとC++へ移行した方が無難
まぁ授業があるのなら,
平行でC++(というよりオブジェクト指向)の概念を学ぶのがベストかな
0481デフォルトの名無しさん
NGNG0482デフォルトの名無しさん
NGNG「NetMeetingのようなものを作る」
というのが最終課題なのですが
画像と音声を扱うなら,どういう勉強をすればいいでしょう?
資料などお勧めがありましたら教えてください.
(ググってはみましたが,いまいち要領を得なくて)
現在,チャット程度のものができている状態です.
0483デフォルトの名無しさん
NGNGプログラム組むなら最低限のPCの知識を得てからだ罠
ある程度自分でトラブルシュートできるようになってからじゃないと
先生にこうしろといわれたからこういうソース書いた
とか言うPGが出てきそうだ
0484デフォルトの名無しさん
NGNGちなみにこういうのもある。
ttp://www.microsoft.com/japan/msdn/vstudio/2005/express/visualc/
0485デフォルトの名無しさん
NGNGLinuxと違ってシームレスに扱えるのが魅力。
#インストールも楽だし。
0486デフォルトの名無しさん
NGNGとはいえ覚えておきたいのでどっか紹介ヨロ
0487デフォルトの名無しさん
NGNGAutoconf/Automakeで作ればいいやん
0488デフォルトの名無しさん
NGNG0489デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1095325802/
0490デフォルトの名無しさん
NGNG漏れこれ読んだ
http://www.ecoop.net/coop/translated/GNUMake3.77/make_toc.jp.html
もれのmingwにはAutoconfとかAutomakeとかなくてよ。
makeを憶えとくのは無駄にはなんねー。
つかglutとかSDLとか何だとか、有名どころのライブラリすら
makefileをちょっといじらないと、コンパイルやリンクが通らない場合もあるしよ。
# つーかもれglut使用アプリのリンクが通らなくて悪戦苦闘しててよorz
0491デフォルトの名無しさん
NGNG「デメテルの法則」かな。
ここで CChildA::func メソッドがアクセスしていいのは
CParent のメンバだけ。
"b.hoge = 3;" の部分で、CParent を超えて
CChildB のメンバにアクセスしている事になるが、
これがデメテルの法則を破っている。
って事でいいのかなあ?
あの法則を最初に知った時、要するに「触れるものは
何でも触っていいぞ」としか読めなくて難儀した(;´Д`)
つか今もよく分かってないし(;´Д`)
0492デフォルトの名無しさん
NGNGSDLってGTK+に比べたら特殊だと思うけれどね…
0493デフォルトの名無しさん
NGNGint main(void)
{
int i;
for(i=0; i<9; i++){
printf("error\n");
}
printf("予想は i=9\n");
printf("i=%d\n", i);
return 0;
}
上記のプログラムをコンパイルすると
jikken.c:11:16: warning: unknown escape sequence: '\221'
と出て
予想はi=9
と出るべきところが
卵zはi=9
と出てしまいます。
予想 という漢字は使えないのでしょうか?
コンパイル環境は
gcc version 3.3.1 (cygming special)
cygwinのバージョンは分かりませんでした。
0494デフォルトの名無しさん
NGNG文字コードがCygwinと君のエディタの出力が違うため。
0495デフォルトの名無しさん
NGNG「予想」の文字コードの並びが 0x97 0x5c 0x91 0x7a だ。
コンパイラは 0x5c を見つけると、特別なモノに置き換えるか、無視をする。
この場合は無視されて、0x97 0x91 0x7a と解釈される。
0x97 0x91 は「卵」だ。0x7a は "z" だ。
解決するには、「予\想」とする。
0496デフォルトの名無しさん
NGNGに16進数の文字列が入っていて、それを10進数のint型に
変換するにはどうすれば出来ますか?
0497デフォルトの名無しさん
NGNG>10進数のint型
詳細キボン
0498デフォルトの名無しさん
NGNG例えば、char *strに003Aが入っているとすると、int iに58を
代入したいということです。
0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNG毎回違う16進数を変換したいのです。
0501デフォルトの名無しさん
NGNGよく見ろ
>>498は char * だから文字列 "003A" のことを言ってるに違いない!
0502デフォルトの名無しさん
NGNGあとintに入るのは値であって、10進とか16進は関係ない。
*進数は値を文字で表現する手段の一つに過ぎない。
0503デフォルトの名無しさん
NGNGちょっとやってみます。
0504デフォルトの名無しさん
NGNGint retNum=0, last=strlen(pBuff)-1;
for(i=last; i>=0; i++){
retNum += pBuff[i]*pow(10,last-i);
}
return retNum;
}
0505デフォルトの名無しさん
NGNGretNum += pBuff[i]*(16,last-i)
0506デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
main(){
int a[10],i,j;char *str,*tep;
for(j=0;j<10;j++){
sprintf(str,"%p",&a[j]);
printf("%s\n",str);
i=strtol(str,&tep,16);
printf("%d\n",i);
}
}
0507デフォルトの名無しさん
NGNGどうもです。
見てみます。
0508デフォルトの名無しさん
NGNGありがとうございます。
\ を足していきたいと思います。
0509504
NGNGint chr=toupper(theChr);
if('A' <= chr && chr <= 'F') return chr-'A'+10;
else if('0' <= chr && chr <= '9') return chr-'0';
return 0;
}
int Ret_hex(char *pBuff){
int i,retNum=0, last=strlen(pBuff)-1;
for(i=last; i>=0; i--){
retNum += Ret_ChrHex(pBuff[i])*pow(16,last-i);
}
return retNum;
}
コンパイルせずに書いたから間違えまくり。激しくゴメン。
0510デフォルトの名無しさん
NGNG0511デフォルトの名無しさん
NGNGダメダメじゃん。
0512デフォルトの名無しさん
NGNG0513デフォルトの名無しさん
NGNGbccを使った場合ソースのコンパイルはどのように行えばよろしいのでしょうか?
0514デフォルトの名無しさん
NGNG後,複数のソースにまたがるなら
「分割コンパイル」「makefile」がキーワード
0515デフォルトの名無しさん
NGNG0516デフォルトの名無しさん
NGNG時間的にもこんなに早くレスをもらえるとは思いませんでした。
参考させていただきます。ありがとうございます。
0517デフォルトの名無しさん
NGNGいちいち関数に引数として渡したり戻り値として返したりしながら
変数をたらい回しにしてるのですが
複数の関数間にまたがる変数はグローバル変数にしたほうがいいような
気がするんですが
グローバル変数にする時のおおまかな基準とか教えてください
0518デフォルトの名無しさん
NGNG基本的になにもグローバル変数にはしません。
関数間をたらいまわしにするのが正しいです。
もしそれが不自然に感じるのなら、関数の設計やたらいまわしの仕方がおかしいです。
structやclassで関連性の強い変数をまとめるなどしてみるとすっきりするかもしれません。
0519デフォルトの名無しさん
NGNGstructでまとめれそうなのがたくさんあるのでまとめてみます
グローバル変数化しないでがんばろうと思います
アドバイスありがとうございました
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG0522デフォルトの名無しさん
NGNGまあまあ
>>520
なんでそう思うの?
0523デフォルトの名無しさん
NGNG必死だなw
0524デフォルトの名無しさん
NGNGそうです。グローバル変数だと名前の衝突が起こりやすくなるので
たくさんあると使いにくくなります。しかし、プログラムが
どういうモードで動いているかとか、全体のエラーの個数などは
グローバル変数の方が良いかもしれません。
0525デフォルトの名無しさん
NGNG漢かどうか
0526デフォルトの名無しさん
NGNG1000行程度の個人で作るプログラムならまだしも。
0527デフォルトの名無しさん
NGNGこちらのスレの方が私の質問のレベルにあってそうなので
改めて質問させていただきます。
文字列の変数a,b,cにSeven,Six,Fiveの文字列をscanf文を用いて読み込み、
Seven
Six
Five
というように表示せよ。
とあるのですが、どのようにプログラムを組めばいいのかわかりません。
よろしければ教えてください。
0528デフォルトの名無しさん
NGNG悪いがここも適当ではない
ttp://pc5.2ch.net/test/read.cgi/tech/1097592876/l50
0529デフォルトの名無しさん
NGNGSeven
Six
Five
というように表示すればいい。
0530デフォルトの名無しさん
NGNGできればヒントだけでもと思ったのですが。
0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNG本当にこのまま問題が出てるとしたらCだと解けない気がする。
0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNG機能ごとに構造体にまとめて、
その構造体のグローバル インスタンスを作るほうがよい。
0536デフォルトの名無しさん
NGNG0537デフォルトの名無しさん
NGNGそこまでひどくはないですけど、私もそんな感じです。
でもグローバル変数をなくすことはできませんよね。
(なくそうと思えばなくせますけど、逆にプログラムの複雑度が上がる)
0538デフォルトの名無しさん
NGNGうん。
0539デフォルトの名無しさん
NGNGグローバル変数なんか無くても困らんと思うけど?
0540デフォルトの名無しさん
NGNG0541デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/4320026926/249-1209347-0897963
↑のP20の
#include<stdio.h>
main()
{
int c;
c = getchar();
while (c != EOF){
putchar(c);
c = getchar();
}
}
ってプログラムをやっても延々と続くんですが、EOFを打ち込めば終了ってワケじゃないんでしょうか?
ソフトはVC++使ってます、誰か教えて_| ̄|○
0542デフォルトの名無しさん
NGNGその本もってないから良く分かんないけど、おまいがちゃんと読んでないだけなんじゃないのか?
ってかその本訳にかなり問題があるみたいだな
0543デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNGttp://www9.plala.or.jp/sgwr-t/c/sec08.html
をEOFで検索
0545デフォルトの名無しさん
NGNGK&Rの本って皆持ってるらしいけど、必要感じた事無い。。。
0546545
NGNG0547デフォルトの名無しさん
NGNGお布施みたいなもんだからね
0548デフォルトの名無しさん
NGNG>グローバル変数なんか無くても困らんと思うけど?
そうすか?
ある程度大きなプログラムになるとどうしても必要になると思いますが、
どうやって グローバル変数をなくしてます?
0549デフォルトの名無しさん
NGNGグローバルを使わざるを得ないとしたら、むしろ設計に問題がある。
0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNGもグローバル扱いですか?
0552デフォルトの名無しさん
NGNGCだと関数毎にコンテキストを渡すのは面倒極まりないが、
C++だと上位オブジェクトが、自分で作る下位オブジェクトに自分を知らせれば自然に
葉から幹にさかのぼれるツリー構造が出来上がる。
もしどうしても面倒なら static 変数 + 取得・設定用関数を作ればいい。
グローバル変数を生で晒しとくよりは断然マシ。
0553デフォルトの名無しさん
NGNGgotoを否定したがる香具師と同じようなもんだ
気にしないで使いたまえ!
0554デフォルトの名無しさん
NGNGグローバル変数化以外にずーっと保持できる方法ってあるんでしょうか?
0555デフォルトの名無しさん
NGNG0556デフォルトの名無しさん
NGNG私はグローバル変数を使いたくないので寿命の長い値はファイルに格納していますよ。
0557デフォルトの名無しさん
NGNGでクラスのスタティックメンバがら取得する。
0558デフォルトの名無しさん
NGNG0559デフォルトの名無しさん
NGNG>Cだと関数毎にコンテキストを渡すのは面倒極まりないが、
>C++だと上位オブジェクトが、自分で作る下位オブジェクトに自分を知らせれば自然に
>葉から幹にさかのぼれるツリー構造が出来上がる。
これだとクラス間の関連性が無用に増えてしまうのでは?
たとえば、Compiler クラスが Preprocessor クラスを所有している場合、
Preprocessor 単体で使えるにも関わらず Compiler との関係をもつということに
なりますよね?
> もしどうしても面倒なら static 変数 + 取得・設定用関数を作ればいい。
> グローバル変数を生で晒しとくよりは断然マシ。
これは分かります。
このような使い方も含めてグローバル変数といいたいわけですけど。。。
0560デフォルトの名無しさん
NGNGグローバル データはとりあえず議論から除外ということでお願いします。
0561デフォルトの名無しさん
NGNGPreprocessor が Compiler に依存しないなら、
Preprocessor が依存する情報だけを渡してやればいい。
もし Preprocessor が勝手に static 変数やグローバル変数を使ってしまうと
マルチスレッドで動かしたときなどに悲惨な結果になる。
それとグローバル変数と、static変数、さらに間に一枚関数を噛ますのでは弊害の次元が違う。
同列に扱う無かれ。
0562デフォルトの名無しさん
NGNGいいような種類のデータを受け渡すことを考えてみる。
・グローバル変数
実体を呼び出し側で持つか関数群側で持つかは兎も角、グローバル変数なら呼び出し側で書いておけばいい。
但し、値を設定し忘れて呼び出した場合のトラブルが予想されるし、仕様変更の影響を受けやすい。
・関数群内グローバル変数(静的変数)
関数群にinit()のような初期化関数を用意し、そのパラメータで必要なデータを渡してもいい。
その場合、初期化関数で静的変数に書けばいいのだが、やはり初期化忘れの影響は出る。
・パラメータ
毎回関数呼び出しごとにパラメータで渡しても共有できる。
しかし、毎回渡さなければならないので呼び出し側でそのデータを維持しておく必要が出てくる。
・クラス化
その関数群を一つのクラスのメンバ関数とし、必要なデータもメンバ変数として実装する。
そうすればコンストラクタのパラメータでデータを渡せる。
まぁ、既存のライブラリの実装を見れば、グローバル変数に頼っているものが殆どないと思うが。
#それでも例えばVCのファイルモード(バイナリ/アスキー)はグローバル変数だったりするが。
##突っ込まれ防止に補足すると、fopen()のパラメータでも渡せるからちょっと事情は違うね。
0563デフォルトの名無しさん
NGNGgo to使わないでしようとすると同じようなプログラムを何回も使わないといけない
量増えても使わない方がいいのでしょうか?
0564デフォルトの名無しさん
NGNG理解が足りていないようだが、必要なら使えばいい。
0565デフォルトの名無しさん
NGNG普通に行われてるんですか?
0から開発するより手っ取り早いから絶対やってるよね
0567デフォルトの名無しさん
NGNG0568泣いてばかり子猫ちゃん
NGNG誰か教えてくだせえ、お願いしまんこ。
環境については、今回は割愛させてください。
フローチャートや概念的なものだけを教えていただければ十分でございます。
XMLデータファイルを「つりひも」で取得したいのですが、
どのような手順にすればよいのでしょうか?
まず対象タグの属性値を、なんかの変数に取得して、
そこからプログラムでコントロールすれば包茎なのか?
0569泣いてばかり子猫ちゃん
NGNG<root>
<list>
<li1>1</li>
<li2>2</li>
<li3>3</li>
<param ref=1>
<param ref=2>
</root>
ここで <param1 ref=1> ならば <list> の <li1> の値 1 が取得できる
というようなプログラムです。 どんなカンジのフローチャートなのよ、
あたしわかないよ〜
誰か助けてぇ〜〜!!!
0570泣いてばかり子猫ちゃん
NGNG<root>
<list>
<li1>1</li>
<li2>2</li>
<li3>3</li>
</list>
<param ref=1>
</param>
<param ref=2>
</param>
</root>
0571泣いてばかり子猫ちゃん
NGNG値をゲットするようなコードを書く、おそらくX.compare("1") == 0なら
<list>の<li1>の値を取得する…こんなカンジのコードでいいのかな?
もうわけがわかんないよ・・・ううう、
当方、C++のドシロウトですよ、奥さん。
0572デフォルトの名無しさん
NGNGサンプルだけでいいならyaccとlexでがんがれ
↑上のが意味わかんなかったら scanfとループでがんがれ
0573デフォルトの名無しさん
NGNG0574泣いてばかり子猫ちゃん
NGNGお付き合いください、もし、協力をしていただけたのなら
協力者が幸せになれるように神社に行ってきてお祈りしてきますわ。
<上記の質問の続き>
vectorに取得したデータを入れたいなぁ…
そんで出力してと…はぁ・・・・デスマはつらいなぁ
0575デフォルトの名無しさん
NGNGどっちがいいのでしょうか?
0576デフォルトの名無しさん
NGNGただし、利用頻度が少なく翻訳単位に跨がる定数であれば、
静的な変数として持つことを考えても良いのでは。
0577デフォルトの名無しさん
NGNG0578デフォルトの名無しさん
NGNGただのセクハラおやじか…^^;
0579デフォルトの名無しさん
NGNGEffectiveC++によれば、
#define NUM 100
はコンパイラのエラーやデバッガで「NUM」と表示されず「100」という数字で表示されてしまうため、
その値が何を表しているか分からなくなってしまう可能性がある。そこで、
const int NUM=100;
としておけばデバッガでも「NUM」と確実に表示され、可読性が上がる。
という理由を挙げて変数での定義を推奨している。
0580デフォルトの名無しさん
NGNGconst はグローバル変数が生成されてしまって
無駄ではありませんか?
マクロか enum にすべきでは?
0581デフォルトの名無しさん
NGNGenum ならいいが何でマクロなの?
理由は?
0582デフォルトの名無しさん
NGNGそんなもん心配すんな。
C++ならコンパイル時に消滅するし。
0583デフォルトの名無しさん
NGNG実際使うときは#defineしてもらったほうがうれしい。
const だと定義されてなかったときと合ったときで処理を分けることが出来ない。
結構困ることがある。
型定義もだけどさ。
言語ベースのifdefが欲しいよ。
0584デフォルトの名無しさん
NGNGC++ならっつ〜かコンパイラや最適化レベルによるけどな。
0585デフォルトの名無しさん
NGNGほんとに消える〜?
VC6 とかでも?
0586デフォルトの名無しさん
NGNGC++では const int は定数扱い。消える。
最適化は関係ない。
0587デフォルトの名無しさん
NGNGそもそもVC6は論外。
0588デフォルトの名無しさん
NGNG定数に置き換わってるから
0589デフォルトの名無しさん
NGNGextern const int xxx;
int main(void)
{
return xxx;
}
---------------------------
--------------------------- data.cpp
extern const int xxx = 100;
---------------------------
こうすると、次のようなコードが吐かれる。
VC6 の Release モードね。
.text:00401000 mov eax, ds:dword_4050A0
.text:00401005 retn
0590デフォルトの名無しさん
NGNG次は &xxx でアドレス取ったらとか言い出しそうだなw
0591デフォルトの名無しさん
NGNGなかなか覚えられないんですけどはじめはこんなもんでいいんでしょうか?
0592デフォルトの名無しさん
NGNGttp://data.uploda.net/anonymous/etc2/dat6/upload21258.jpg
lcc-win32を使っているのですが、どんなプログラムを打っても
画像のようなillegal return typeという警告が出てしまいます
大学のPCで打ったときはなんともないんですが、自分のPCでは全部こうなります
なにか問題があるんでしょうか・・・?
0593デフォルトの名無しさん
NGNGはじめは ね。
0594デフォルトの名無しさん
NGNGするにはどのようにしたらよいのでしょうか?
クラスを継承するときならば、継承される側のクラス(基底クラス)が単体でインスタンスを生成できないように
したければ抽象クラスにすればよいと思っているのですが、包含の時はどうなのでしょう?
初心者な質問ですみませんが、もしお答えいただければ助かります m(_ _)m
0595デフォルトの名無しさん
NGNG0596デフォルトの名無しさん
NGNGあなたのコードに問題があります
0597デフォルトの名無しさん
NGNGコンストラクタをprotectedとかprivateにして
包含されるクラスに対するfriendでfactoryを作りそれを使って生成する
0598デフォルトの名無しさん
NGNG基底クラスを抽象クラスにした上で
その派生クラスを包含するクラス内で定義する。
class hoge { /*インターフェースを純粋仮想関数として定義*/ };
class owner {
class conclete_hoge : public hoge { /*実装*/ };
conclete_hoge my_hoge;
};
0601594
NGNGお答えありがとうございます。そうですね、こうすればできるようでした。本当にありがとうございます
もしよろしければ、どちらの書き方がより一般的に使われるのかも教えていただけないでしょうか?
それともこのような形で包含を使おうとすること自体あまり一般的ではなく、するべきではないのでしょうか?
たびたびすみませんがよろしくお願いします
0602泣いてばかり子猫ちゃん
NGNGどうか教えてください
0603デフォルトの名無しさん
NGNG包含されることはできるが単体ではインスタンス化できないクラスとは、
すなわち包含しているクラスが一緒に持っているメンバが必須と言うことではないか?
そうなら、そいつらまとめて一つのクラスにすればよし。
そうでないなら、インスタンス化を禁止することでどんな利点があるのか教えてください。
0604デフォルトの名無しさん
NGNG0605泣いてばかり子猫ちゃん
NGNGサンクス!!
0606デフォルトの名無しさん
NGNGint main(void)
{
〜〜〜〜〜〜〜
〜〜〜〜〜〜〜
〜〜〜〜〜〜〜
〜〜〜〜〜〜〜
printf("tesu=%d\n, a+b);
return 0;
]
>>592
これでやってみ
\nは\nと同じ意味だから。
0607601
NGNG全くそのとおりで、最初から一つのクラスにすれば問題はないのです。
ただ、そうやってまとめていくと一つのクラスが大きくなりすぎて見にくくなりそうだったので何か別の方法はないかと思って
質問させてもらったのですが、こんなやり方は間違っているようですね
皆様ありがとうございました
0608デフォルトの名無しさん
NGNG間違ってないと思うが。
クラスを極力小さくしたいと思うのは正しい。
解決策はすでに出てるし。
0609601
NGNGそういってもらえるとうれしいです。でもあまり一般的手法ではないのですよね?(w
とりあえず今回は上に出た方法で乗り切って、次回からはクラス構造をもう少し考えて作るようにします。
0611デフォルトの名無しさん
NGNG単にクラスを大きくしたくないというだけで
>>597-598みたいな事をするのはどうかと思うが、
インターフェースは共通だが実装はそのインスタンスを
保有するクラスごとに異なる&隠蔽されているなんて
ケースは別に珍しくはない。
0612デフォルトの名無しさん
NGNGすぐに解読できてもいいのです・・・。
0614デフォルトの名無しさん
NGNGfread(&code, 1, 1, fp_read);
code ^= 0xff;
fwrite(&code, 1, 1, fp_write);
とか
int len;
unsigned int buf = 0;
do {
for (counter = 0; counter < 4; counter++){
len = fread(&code, 1, 1, fp_read);
buf |= (code << (8 * counter));
}
fwrite(&buf, 4, 1, fp_write);
} while (len != 0);
とか。
0615泣いてばかり子猫ちゃん
NGNGXMLで属性値の取得ってのは可能なのかな。
<Vallist>
<val1>10</val>
<val2>20</val>
</Vallist>
<data countid=1 ref=1>
</data countid=1 ref=1>
<data countid=2 ref=2>
</data countid=2 ref=2>
これで「つりひも」の操作を行うために
<data countid=1 ref=1> の 「 ref=1 」 をDOMを介して取得したいのだが
(なんとかNode…とかっていうコードを書けばいいんだよね?)
それでref=1なら<Vallist>の<Val1>のタグの値10をゲットする…
そんなプログラムを書いているんだけど、
タグの値ならともかく、タグの属性値の値なんて取得できるのかな〜
誰かご存知ですか、知っていたら教えてください。
0616デフォルトの名無しさん
NGNG前スレには移動する旨伝えてきたのか?
んで、まずそのめちゃくちゃなシンタックスエラーは無視するとして、XPathで一発でいける。
もっとも、val1/val2なんて気色の悪い書きかたしないで val id="1" とかにしろ。
0617デフォルトの名無しさん
NGNGキミの書いてるそれはXMLじゃない
0619デフォルトの名無しさん
NGNG<val id=1>10</val>
<val id=2>20</val>
</Vallist>
<data countid=1 ref=1/>
<data countid=2 ref=2/>
0620デフォルトの名無しさん
NGNGMySQL 5.0.0
SQLデータベースから次のようにレコードを取得しようとすると
CRecordset::Open(CRecordset::snapshot, command , CRecordset::none);
条件にあうレコードが0件だと
Openを読んだ時点でエラーが起きるのですがこれを回避する方法はどんなものでしょうか?
0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNGconst static int a = 5;
};
は、できますが
class A{
const static int a[2] = {0, 1};
};
は、エラーがでます
配列は初期化できないのですか
0623デフォルトの名無しさん
NGNGどんなエラーだよ、発行してるSQLはどんなだよ
0624デフォルトの名無しさん
NGNGメンバ変数である配列は初期化できない。
但し、ローカルな配列は初期化できるのでこういうことはできる。
class A {
// 厳密に言えばポインタを返す
const int * a() {
static const int b[] = {4, 5, 6,};
return b;
}
typedef int ta[3];
// こちらは配列への参照を返す
const ta & aa() {
static const int b[] = {4, 5, 6,};
return b;
}
};
0625デフォルトの名無しさん
NGNGclass A {
public:
void print() {std::cout << a()[1] << ' ' << aa()[2] << std::endl;}
};
但し、最適化してもconst intと違って実体があることに注意。
0626デフォルトの名無しさん
NGNG方法ありますでしょうか
0627デフォルトの名無しさん
NGNG効率無視していいなら、最初に read() で読んで改行コードが出てきたら
行頭に seek() して 、一行分 read() でいいでしょう。
0628622
NGNG利用例のおかけで理解できました
static const int でもよいみたいですね
0629620
NGNGというような複雑なやつです。
sqlクライアントのほうから直接実行してみるとちゃんと期待通りの結果が得られます。
Open時のエラーではありませんでした。
IsBOF()かIsEOF()を呼ぼうとすると
Debug Assertion Failedがでます。
IsBOF()IsEOF()が実行できない条件なんてあるんでしょうか?
0630デフォルトの名無しさん
NGNGのような式を読み込んで数式の計算をしたいのですが
どうすればいいですか?
0631デフォルトの名無しさん
NGNG構文解析とか、lex とか yacc とか (flex, bison) そういう用語で調べるといいよ。
0632デフォルトの名無しさん
NGNGOpenの戻り値は?
0633デフォルトの名無しさん
NGNGできますでしょうか?
char test[256]←256を1000にしたいのです。
0634デフォルトの名無しさん
NGNGコンパイラ依存だと思うが、
VC とか BCB とかならできると思うぞ。
0635デフォルトの名無しさん
NGNG0636デフォルトの名無しさん
NGNG0637デフォルトの名無しさん
NGNGc++ならistringstreamとかboost::lexical_castでできる
#include <iostream>
#include <boost/lexical_cast.hpp>
#include <sstream>
using namespace std;
int main () {
string s0 ("0.54e-10");
istringstream iss (s0);
double d0; iss >> d0;
double d1 (boost::lexical_cast <double> (s0));
cout << d0 << " " << d1 << endl;
return 0;
}
0638デフォルトの名無しさん
NGNGその解釈は0.54掛ける10の-10乗だが、>630を読む限り、0.54掛けるeの-10乗だ。
0639デフォルトの名無しさん
NGNG0641デフォルトの名無しさん
NGNG怒らないが、必ずしも答えるとは限らない。
0642620
NGNG0643デフォルトの名無しさん
NGNGいや、0.54掛けるe引く10に読めるが。
0644デフォルトの名無しさん
NGNG答えなくてもいいから優しくしてね・・・。
C++でクラスをソースファイルとヘッダーファイルに分けるにはどうすればいいのでしょうか?
かれこれ一週間ほど悩んでいます。
馬鹿でごめんね、あはは・・・。
0645sage
NGNG「C++」じゃなくて環境書いた方がいいよ
0646デフォルトの名無しさん
NGNGヘッダ CHoge.h:
#pragma once //VC用
class CHoge {
public:
CHoge();
~CHoge();
int foo(int f);
private:
...
};
ソース CHoge.cpp:
#include "CHoge.h"
CHoge::CHoge()
{
ほげ
}
CHoge::~CHoge()
{
禿
}
int CHoge::foo(int f)
{
( ´_ゝ`)
}
0647デフォルトの名無しさん
NGNGむぅ、そうかもしれん。
>>644
概ねこんな感じに、宣言と定義を分ければいいのでは?
<< foo.h >>
class foo {
int member;
public:
foo(); // ディフォルトコンストラクタ
int getMember() {return member;} // こんなのは中に書いてしまってもいいかと
void setMember(int bar); // こっちは敢えて外に書くので宣言のみ
};
<< foo.cpp >>
#include "foo.h"
foo::foo()
{
// ディフォルトコンストラクタは要らなきゃ省略で
}
// 宣言と定義を分けた例
void foo::setMember(int bar)
{
member = bar;
}
0648デフォルトの名無しさん
NGNGありがとう。
これで少し賢くなれそうです。
0649630
NGNG0.54かけるeひく10です
0650デフォルトの名無しさん
NGNGchar str[256];
public:
void set(char *s){
strcpy(str, s);
}
};
print(char *s){
cout << s;
}
int main(){
class str moziretu;
moziretu.set("文字列");
print(moziretu); // *
}
みたいなのを作りたいんですけど
print関数の第1引数にstrクラスを指定したときにstrクラス内のstrのポインタを渡す方法はないでしょうか?
operatorでいけるかなと思い試してみたのですがわかりませんでした・・・やっぱりclass strを渡したとしか認識しないのでしょうか
0651デフォルトの名無しさん
NGNGclass strに
const char* get() const { return str; }
を作って、print関数を
print(const char *s)
にする。
0652デフォルトの名無しさん
NGNGどうしても、言うに言われぬ理由でそのまま使いたいなら
print(const char *s) にした上で
strクラスに
operator const char*() const { return str; }
を追加する。おすすめはしない。
普通は >>651 のようにやるべき
0653デフォルトの名無しさん
NGNGお返事ありがとうございます
652さんので自分のしたいことができました
0654デフォルトの名無しさん
NGNGおいおい、判ってる?
0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNG使えない。
なんで用意されていないのか不思議。
あると便利だよね。
0658デフォルトの名無しさん
NGNGキャストを明示するぐらいならアクセッサを書け、と。。
0659デフォルトの名無しさん
NGNG~~~~~
このconstってどうゆう意味ですか?
0660デフォルトの名無しさん
NGNGcnost参照やらでも呼び出せる。
0661デフォルトの名無しさん
NGNG.NETやJAVAだとdecimal型等があるようなのですが・・
自分で作るしか無いのでしょうか?
0662デフォルトの名無しさん
NGNG661はlong doubleでもの間違いです
0664デフォルトの名無しさん
NGNG自作するかライブラリを探すのがよいかと。
C/C++ の言語や標準ライブラリでは用意されていないからね。
0665デフォルトの名無しさん
NGNGありがとうございます
0666デフォルトの名無しさん
NGNGmutableってなんですか?
0667デフォルトの名無しさん
NGNGconstメンバ関数からはメンバ変数の変更ができないが、例外として変更できるようにするキーワード。
mutable int num_;
void set(int n) const {
num_ = n; //変更できる
}
あとstaticな変数もconstメンバ関数から変更可能
0668デフォルトの名無しさん
NGNGサンクス!!
0669デフォルトの名無しさん
NGNGhoge.exe の 0x0044d409 で初回の例外が発生しました : 0xC00000FD: Stack overflow
hoge.exe の 0x0044d409 でハンドルされていない例外が発生しました : 0xC00000FD: Stack overflow。
というエラーが出て
void func(void)
→ {
・・・・・・・・・
}
func関数の”{”しかない行に黄色い矢印が現れます
何が原因なのでしょうか?
VC.netです
0670デフォルトの名無しさん
NGNGスタックがオーバーフローしたからです。
0671デフォルトの名無しさん
NGNG0672デフォルトの名無しさん
NGNG0674デフォルトの名無しさん
NGNGその関数だけでいいよ。
それも巨大なら最初のほうだけでいい。
0675デフォルトの名無しさん
NGNG黄色い矢印が指している関数内にa[30]くらいの配列があります
0676デフォルトの名無しさん
NGNG0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNGa = b - a;
b -= a;
a += b;
}
この関数、VC++6.0でコンパイル通るんですが、
gcc&bccだと
parse error before '&' token.
となり、何回も見直してもさっぱり原因がつかめません。
原因分かる方いませんか?
0679デフォルトの名無しさん
NGNGgccじゃなくg++を使え
0680678
NGNG解決しました。有難うございます!
0681デフォルトの名無しさん
NGNG最初の方は100個くらいの変数宣言と値の代入が占めてます
見せるのは無理そうですすいません
>>676
bという関数からbを含むような関数を呼び出してるんですけど
再帰呼び出しってそれのことなんですか?
>>677
int型です
0682デフォルトの名無しさん
NGNGbという関数が自分自身(b関数)を呼び出しているならその通り。
bからbを呼び出している関数を呼びだした場合も問題は起こりうる。
0683デフォルトの名無しさん
NGNG100個もねー。そりゃやっぱその関数でスタックオーバーでしょうね。
コードの質がよくわからんから失礼なアドバイスかもしれないけど、
ローカルにしなくてよい変数はグローバルとか static とかにしてる?
速度が重要でないならローカル変数じゃなくてヒープ上にメモリを確保するといい。
その関数はちゃんんと再帰が終了するようになってる?
無限に再帰したりしてちゃだめだよ。
0684デフォルトの名無しさん
NGNG再帰呼び出しが起こらない条件で実行するとエラーが起きなくなったみたいです
もう一回再帰呼び出しを見直してみます
再帰呼び出しが有限回数で終わるようにすればいいんですよね?
0685デフォルトの名無しさん
NGNG再帰周辺の汗晒せ。そしたら大体分かる。
0686デフォルトの名無しさん
NGNGアドバイスもらえるだけでもありがたいです
無限に再帰してないか調べてみます
お返事くださった方々ありがとうございました
0687デフォルトの名無しさん
NGNG晒すのは勘弁してください、すいません
0688デフォルトの名無しさん
NGNGgmpおすすめ
0689デフォルトの名無しさん
NGNG正しそうで微妙に間違ってるなぁ。
0690592
NGNG関数を途中で付け足したりするとエラーが出るのですが、最初から書きなおすと
大丈夫だったりします
途中でintの後に関数を付け足すとまずいんでしょうか?
あと、.cのプログラムに日本語を挿入することは出来ますか?
0691デフォルトの名無しさん
NGNG言っていることがまったく理解不能だが
> 途中でintの後に関数を付け足すとまずいんでしょうか?
まぁ常識的に考えてまずいだろうなぁ。
0692デフォルトの名無しさん
NGNGVC+でgmpって問題あるのでは?
0693592
NGNGすみません、初心者なので上手く説明できなくて・・・
{}の中に
int a,b;
と関数を入れて、そのあと10行ほど関数cを含んだソースを書いているうちに、
cを定義していないことに気づいて
int a,b,c;
と書きなおしたんですが、コンパイルするとよくわからないエラーが出ました
一から書きなおすと大丈夫でした
0694デフォルトの名無しさん
NGNGまずは>>592の誤りについて指摘します。
main関数の戻り値の型はintが処理系共通であり、その他の形式の
main関数は処理系に依存すると定義されています。可搬性がなくなる
ので、できるだけ使わないようにしましょう。
(ISO/IEC 9899:1999 5.1.2.2.1 Program startupより)
また、戻り値がint型のmain関数のreturnを省略した場合、return 0;が
末尾に書かれているのと同等であることが決められています。
(ISO/IEC 9899:1999 5.1.2.2.3 Program termination -1より)
よってこの場合、戻り値の型と(暗黙のうちに返された)戻り値0の型が
一致せず、エラーが起きているのです。
次に、「.cのプログラムに日本語を挿入することは出来るか」との疑問
ですが、これは処理系が対応しているかどうかによりますので、lcc-win32
ならばその解説を読むしかありません。残念ながらこちらにはありません
ので、確認できません。
0695694
NGNG調べてみましたら、ソースファイルを、Weditではなく例えばメモ帳などで編集
するようにすれば、日本語も入力できるとの事です。
(ttp://www.forest.impress.co.jp/article/1999/11/16/lcc_win32.htmlによる)
ただ、外国製のソフトでローカライゼーションを行っていない以上、おそらく
エスケープシーケンスとの衝突は避けられないでしょう。C初心者との事です
のでこれについてはそのうち文字が化けるなどの問題として悩むことになる
でしょうから、「エスケープシーケンス(またはエスケープ文字)」という言葉を
キーワードとして覚えておいていただくとよろしいかと思います。
0696デフォルトの名無しさん
NGNGすみません、戻り値の型というのはよくわかりませんが
void main(void)
よりも
int main(void)
のほうが汎用性があるということでしょうか
>>606さんに教えてもらった通りに書くと成功しましたが、教本はvoid main(void)で最初統一してあったので・・・
>>695
はい、たしかにlcc-winで入力すると文字化けが出ます
日本語入力は当面避けておきます
回答くださった方、ありがとうございました
0697デフォルトの名無しさん
NGNG間違った用語を使わないように。エスケープ文字はエスケープシーケンスとは言わない。
0698デフォルトの名無しさん
NGNG本当にプログラミングを始めたばかりの人のようですが
たぶん、その教本ではまだ引数や戻り値について説明してないため void main(void) にしてあったのでしょう
もう少しその教本を読みすすめましょう
どんなに初心者向けの本でも最初の方10分の1も読めば書いてある内容です
0699デフォルトの名無しさん
NGNGmain()の戻り値の型は、intが正しいのであって汎用性云々は関係ない。
今ではその教本が間違いと言うことになる。
0700694
NGNGその教本の中でvoid main(void)になっているのは、著者がきちんと規格を確認して
いないからでしょう。C言語にはANSI(もしくはISO)の規格というものがあって、その
中でC言語に関するすべてのことが決められているのです。「(ISO/IEC 9899:1999
5.1.2.2.1 Program startupより)」などと書いてあるのは、その規格のどこに定められて
いるかの根拠を示したものです。申し訳ありませんが、その著者はこれを調べることを
「サボって」いるわけですから、あまりいい本とは言い難いですね。
今の時点では「汎用性があるから」という理由で納得していただいてかまいませんが、
後々関数について詳しく勉強するときに「戻り値」の意義を確認し直してみてください。
これからはint main(void)を使うようにしてくださいね。
0702デフォルトの名無しさん
NGNG>今の時点では「汎用性があるから」という理由で納得していただいてかまいませんが
全くよくない。
汎用性が問題なのではなく、正しいか正しくないかが問題。
つーか、この場合の汎用性とは何?
0703デフォルトの名無しさん
NGNG初心者本のミッッションはいかにすばやく習得させるかであってさ、
正確さなんてのは二の次でいいじゃぁありませんか。
0704デフォルトの名無しさん
NGNGそれ以前に696は戻り値という言葉の意味、返し方、宣言の仕方を知らないのだと思われ
0705デフォルトの名無しさん
NGNGまあそれを完璧に鵜呑みにされて
「動くからいいじゃないですか!」
と意地を張られた日にゃたまらないわけだが。
0706700
NGNG上に書いた通り、main関数の戻り値はintでなければ可搬性がなく、ほかは処理系依存であり、
規格上間違いとはいえない(5.1.2.2.1 Program startup -1の末尾にin some other
implementation-defined mannerという記述があることから)までも、可搬性の面からよいとは
言えず、避けるべきであると認識しております。なぜ戻り値が必要かという意味で、「プロセスの
終了状態をプロセス作成元に渡す」という意義を以て、「voidにするよりも」汎用性があると書いた
つもりでした。紛らわしくて申し訳ありません。
0707デフォルトの名無しさん
NGNGgmpライブラリを使ってなんかプログラムを組んで公開する場合には
ソースを全部さらす必要があるけど、
個人的に使う場合には全く問題にならんよ。
詳しくは GPL でぐぐってみるのがよろし。
と、visualスレでマルチするのやめれ
向こうになんか断りしてこい。
0708デフォルトの名無しさん
NGNGlong longとか使えない?
0709592
NGNG大学の授業と平行してやっていますが、
本の最後のほうまで、 void main(void)がちょくちょく使われています
>>700
void main(void)が「ANSI Cに準拠した書き方」として紹介されているんですが、
これは間違いということでしょうか
関数の型や引数についてはまだ習っていないので、とりあえずintに直しておきます
0710デフォルトの名無しさん
NGNG確かANSI-Cではmainの返却値はintでなければならない と明記されていた気がするが
0711デフォルトの名無しさん
NGNGhttp://www9.plala.or.jp/sgwr-t/index.html
>>709
お前さんの持っている本よりこっちの方がやくにたつ
0712700
NGNGANSI Cは、普通C89と言って1989年に定められた規格を指します。実際には
もっと新しいC99と呼ばれる規格があるのですが、完全にこの規格にある機能を
実装したコンパイラが少ないので、未だC89が用いられることが多いのが現状です。
ところが何故か私の手元にはC99(ISO/IEC 9899:1999)しかないので、それから説明
します。5.1.2.2.1 Program startup -1には、main関数の形式は、int main(void)、
int main(int argc, char *argv[])またはこれと同等のもの、または処理系定義の
形式のいずれかとされています。処理系定義とは、「処理系(≒開発環境)が勝手に
決めた形式」のことで、この場合void main(void)はこれに該当すると考えられます。
だから、規格上間違いと言い切ることはできません。
しかし、処理系が勝手に決めていると言うことは、他の環境では動かない可能性が
高いと言うことです。それでは役に立ちませんし、規格の意味もありませんので、
普通はint main(void)とint main(int argc, char *argv[])またはこれと同等のもの以外は
使わないのが(事実上)正しいとするわけです。
【原文】ISO/IEC 9899:1999 5.1.2.2.1 Program startup -1
The function called at program startup is named main. The implementation declares
no prototype for this function. It shall be defined with a return type of int and with
no parameters: int main(void) { /* ... */ } or with two parameters (referred to here as
argc and argv, though any names may be used, as they are local to the function
in which they are declared): int main(int argc, char *argv[]) { /* ... */ } or equivalent;
or in some other implementation-defined manner.
0713デフォルトの名無しさん
NGNG普通に頭のいい著者なら入門書では
戻値の解説の前は戻値を省略して、
ただ main()と書いてるものだが。
0714デフォルトの名無しさん
NGNGそれって C99 でも許されるんだっけ?
0715デフォルトの名無しさん
NGNGhttp://wisdom.sakura.ne.jp/system/winapi/win32/index.html
を一通り読んだぐらいのレベルです。
Bitmap表示をするときに、
WM_PAINT内に全て記述せず
関数で表示しようとするときは
HDC hdc;
HBITMAP hBitmap1, hBitmap2, hBitmap3;
switch (message)
{
case WM_CREATE:
hBitmap1 = LoadBitmap(hInst, (LPCTSTR)IDB_BITMAP1);
hBitmap2 = LoadBitmap(hInst, (LPCTSTR)IDB_BITMAP2);
hBitmap3 = LoadBitmap(hInst, (LPCTSTR)IDB_BITMAP3);
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
Hoge.Show(hInst, hdc, hBitmap1, hBitmap2, hBitmap3); ← ここ
EndPaint(hWnd, &ps);
break;
}
のように、引数にインスタンス、デバイスコンテキストハンドル、ビットマップと
ずらずら渡していくしかないのでしょうか。
0716デフォルトの名無しさん
NGNGHogeが何らかのクラスのインスタンスなら、
そのクラスにBITMAPを読み込むLoadを定義しておくと良いんじゃないでしょうか…?
case WM_CREATE:
Hoge.Load((LPCTSTR)IDB_BITMAP1);
Hoge.Load((LPCTSTR)IDB_BITMAP2);
Hoge.Load((LPCTSTR)IDB_BITMAP3);
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
Hoge.Show(hdc);
EndPaint(hWnd, &ps);
break;
質問の主旨にそぐわなかったらスマソ
0717デフォルトの名無しさん
NGNG大学ではCをやってるのですが、++も入門書は一読しました。
VBが手っ取り早いと聞きますが。Cでプログラムするのとそんなに差があるんでしょうか。
作ってみたいツールがありまして…
0718デフォルトの名無しさん
NGNG…
};
staticな変数を持つ基底クラスBを継承し、
}コンストラクタで、
ZeroMemory(this,sizeof(this));
すると、Bのもつstatic変数も0クリアしてしまいます。
イメージ的に、
ZeroMemory(this,sizeof(this) - sizeof(B) );
みたいなことをしたいのですが、何か方法はありますか?
やっぱりAのメンバを一つ一つ初期化するしかないのでしょうか…。
0719デフォルトの名無しさん
NGNG(((( ;゚д゚)))アワワワワ
面倒ならデータメンバをクラスなり構造体にまとめてゼロクリアしたら?
0720620
NGNG何かヒントというか考えられる可能性なんかはご存知ないでしょか
0721718
NGNG即レスありがとうございます。
ただ、すでに大量にコード書いて、コード修正する方がが時間かかりそうなので、
今回はメンバ一つ一つ初期化することにします。
お手数かけました。即レス、指摘ともども感謝です!
0722デフォルトの名無しさん
NGNGint* fu(void){
int intarray[30][30];
int *p;
(中略)
p = &intarray[0][0];
return p;
}
int main(void){
int *pp;
pp = fu();
(ここでppを用いてfu()のintarrayの値を使いたい)
}
↑のような感じで。
関数の中で配列を宣言して、その配列の値を呼び出し元で使いたいのですよ。
もしかして宣言した関数が終わっちゃったら、配列の頭を覚えたポインタは何の役にも立たなくなっちゃいます?
0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNGやるならmalloc等でヒープに確保するか、static変数にするか
0725デフォルトの名無しさん
NGNG関数内の自動変数はスタックに積まれますので、
その関数から出ると値は保障されません。
そういうことがやりたいのであれば、以下のようにします。
1.呼び出し元の関数で変数定義し、アドレスを引数で渡す
2.変数そのものを外部変数にする
3.呼び出し先の関数でstatic宣言する
0726デフォルトの名無しさん
NGNG関数内で定義した通常の自動変数は関数から抜ける時点で破棄される。
静的な変数はキープされるので、この例の場合はstatic int intarray[30][30]とすれば大丈夫。
後はこちらも参考に。
http://pc5.2ch.net/test/read.cgi/tech/1097416187/624-625
0727722
NGNGありがとうございます。
class変数一つ増やして対処しますわ。
0728デフォルトの名無しさん
NGNG0729717
NGNG0730デフォルトの名無しさん
NGNG0731デフォルトの名無しさん
NGNGstrtok()を使っています
1,2,4,5,6
のようなカンマ間にデータが入っていれば問題ないのですが
1,,,5,6
のようなデータだと、1、NULL、NULL、5、6と区切ってほしいのですが
実際に取得する値は1,5,6となってしまいます。
カンマが連続した場合、カンマ間の値をNULLとして取得してくれるいいアイデアはないでしょうか。
0732デフォルトの名無しさん
NGNG空文字列じゃなくNULLポインターが欲しいのか
0733デフォルトの名無しさん
NGNGsscanf()で1フィールドずつ剥がしたらどうだろう。
#"%[^,]%n"かなんかで。
0734デフォルトの名無しさん
NGNG0736デフォルトの名無しさん
NGNGレスありがとうございます
こちらでも調べてみたのですが、問題が多そうでした。
>>707
マルチしてました。すみません
gmpに詳しいようなのでお聞きしたいのですが、ライセンス関係の話ではなく、VC++でビルトできるのかという意味で、
かなり問題が多そうなのですが、そちらの環境では使えているのでしょうか?
0737デフォルトの名無しさん
NGNGhoge.cpp:186: no matching function for call to 'class::hoge () const'
とでてコンパイルできません。
たしかに、このclass::hoge()メソッドは存在するんですが。
このエラーはどういうエラーなんでしょうか
0738デフォルトの名無しさん
NGNG0739デフォルトの名無しさん
NGNGint main(void)
{
int a = -1;
unsigned int b = 100;
int c = a > b;
printf("変数cの値は%dです。\n", c);
return 0;
}
実行すると、
変数cの値は1です。
と表示されます。
a > b はこの場合真になるのですか?
0740デフォルトの名無しさん
NGNGうん
0741739
NGNG異なる型の変数を関係演算子で
結んだ式はいつでも真ですか?
0742737
NGNGstring class::hoge() const { ... }
とやってます。これでだいじょうぶですよね。
0743デフォルトの名無しさん
NGNG- int c = a > b;
+ int c = b > a;
するとどうなる?
0744デフォルトの名無しさん
NGNGint と unsigned int を演算しようとすると
int が unsigned int に変換される。
intでの-1はunsigned intでは4294967295になるから、
a > bが真になる。
試しにint a=10とunsigned int b=100で比較してみれ
0745デフォルトの名無しさん
NGNGそのメンバ関数を持っているクラスの名前はなんですか?
0746デフォルトの名無しさん
NGNG何をやりたいのか分からないほどにめちゃくちゃ
0747743
NGNG失敬
0749デフォルトの名無しさん
NGNG0750739
NGNG異なる型の値が関係演算子で結ばれるとき、
どちらかの型にそろえるかと思いますが、
型の選択に規則はありますか?
0751デフォルトの名無しさん
NGNGint < unsigned int < long int < unsigned long int < float < double < long double
の優先度で、サイズが大きい方に変換される。
int以下は全てintに変換される。
0752デフォルトの名無しさん
NGNG0754デフォルトの名無しさん
NGNGとあるヘッダで
#include <vector>
class CA {
int m_hoge;
};
typedef std::vector<CA> VA;
class CB {
private:
VA m_hoge2(10);
};
としようとすると、
VA m_hoge2(10);
の行で syntax error : 'constant'となります。
VA m_hoge2;
は通るのですが、動的配列の大きさを予め決めたいのです。
どのようにすれば通るか教えて下さい。VC++.Net2003が環境です。
0755デフォルトの名無しさん
NGNG無理です。CB : m_hoge2(10){}とでもするしかありません。
0756デフォルトの名無しさん
NGNGCB : m_hoge2(10){}
とはどういう意味でしょうか。
なお、実際にはVA m_hoge2(10);の他にもメンバ変数・関数があります。
また、申し訳ありませんが、>754ができない理由をお教え頂ければ幸いです。
よくこういう形で大きさを決めているソースを読むのですが……。
宜しくお願いします。
0757デフォルトの名無しさん
NGNGttp://www.nitoyon.com/vc/reference/cxx/init_value.htm
0758755
NGNGクラスのメンバの初期化ですか。引っかかっちゃったなぁ…… orz
なお、>>755 はコンストラクタでやってね、という発言ですよね。
ありがとうございました。STL(・∀・)ガンガル!
0761デフォルトの名無しさん
NGNG自分はCでAPIは何とか理解できてるのですがC++はサッパリです。
なのでC++から勉強を始めようと思うのですが良い本はありませんでしょうか?
なんだかCの本とは違ってどれも小難しそうで…
0762デフォルトの名無しさん
NGNG簡単な入門ならウェブで解説しているところがあるよ。
↓こことか。
http://wisdom.sakura.ne.jp/programming/cpp/index.html
0763デフォルトの名無しさん
NGNGあきらめたら?
0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNG0766デフォルトの名無しさん
NGNG#include <stdio.h>
int main(int argc, char** argv)
{
char buf[1000];
while (1) {
printf("You>");
fgets(buf, sizeof(buf), stdin);
printf("Genri>すごいね。\n");
}
return 0;
}
0767≠764
NGNG例えばこんなことが書いてある。
--
ただし、綺麗で保守的なプログラムを書きたいのであれば
適当な位置で変数を宣言するのではなく、ブロックの先頭でまとめて宣言するべきです
--
こんなアナクロニズムな…
0768デフォルトの名無しさん
NGNGC++やC99の記法は認めないと。
0769デフォルトの名無しさん
NGNGまぁ、それは好みの相違という気がしますし、
読者がそのとおりに習慣づけても悪いことないと思うけどな。
0770デフォルトの名無しさん
NGNGと、後輩には口をすっぱく。
0771デフォルトの名無しさん
NGNGブロックの先頭でまとめるくらいなら
適当な位置でブロックないし関数に分けたほうがまし。
0772デフォルトの名無しさん
NGNGまぁそれはそれでいいとして、
>>762 のページの問題点ってそんな些細なことなの?
その程度なら初心者に勧めてもいいのではないかな。
0773デフォルトの名無しさん
NGNG> C++とはオブジェクト指向型プログラミングのために生まれたC言語です
一行目からヤヴァイと思う
0774デフォルトの名無しさん
NGNGなぜそれがダメ?
0775デフォルトの名無しさん
NGNG例えばブロックの中間で決定される値を利用してオブジェクトを生成する場合、
先頭で定義する手法は使えない。
つまり、 先頭で定義したり中間で定義したりと統一性が失われることになる。
それよりもなによりも、必要なものは必要なときに準備する方が判り易いと思うが。
0776デフォルトの名無しさん
NGNGどうしたらよいのでしょうか。
変換する便利な関数などはないのでしょうか?
0777デフォルトの名無しさん
NGNGそんなものいらない
0778デフォルトの名無しさん
NGNG0779デフォルトの名無しさん
NGNGchar型配列はそのままバイナリだよ。
バイナリを文字列とみなせば文字列だってだけ。
0780デフォルトの名無しさん
NGNG中身はバイナリだけど…
0781デフォルトの名無しさん
NGNG二進のコンピュータ上で動いてる限りどんなデータもはじめからバイナリだと思います。
0782761
NGNGお騒がせしました…
自力で探します…
0783デフォルトの名無しさん
NGNGそもそもすれ違いかもねw
EffectiveC++でも読んだら?
0784デフォルトの名無しさん
NGNG好みとポリシーを混同するなかれ
0786デフォルトの名無しさん
NGNGバッファの中身をファイル名として落とす方法ってりますでしょうか。
0787デフォルトの名無しさん
NGNG{
bunkatustr = strtok(buff, ",");
id=bunkatustr;
if(id == id_temp)
{
fputs(buff, fl_wr);
break;
}
}//while_end
あるカンマ区切りのデータについて読み込んでIDが一致したら
その行だけを書き込もうと思うのですが
fputs(buff, fl_wr)で一行ファイルに書き込む際、
一行全てではなくidの値しか書き込まれません。
対策でなにかいい方法がございましたらお教え願います。
0788デフォルトの名無しさん
NGNGstrtok()は領域を破壊する。
切り出す手段として、sscanf()を"%[^,]s"で使うか別の領域にコピーしてからstrtok()を使う。
0789デフォルトの名無しさん
NGNGstruct Test{
short x;
short y;
};
vector<Test> structData;
1時間くらい嵌ってる・・・。
0790デフォルトの名無しさん
NGNGエラーメッセージは?
0791デフォルトの名無しさん
NGNGどんなエラーメッセージでしょうか
0792789
NGNGvector-test.cpp: In function `int main ()':
vector-test.cpp:10: template-argument `main ()::Test' uses local type
`main ()::Test'
vector-test.cpp:10: template argument 1 is invalid
vector-test.cpp:10: template argument 2 is invalid
vector-test.cpp:10: ISO C++ forbids declaration of `structData' with no
type
こういうエラーメッセージです。
0793デフォルトの名無しさん
NGNG「uses local type `main ()::Test' 」って、
main関数内でTestを宣言しようとしてる?
0794デフォルトの名無しさん
NGNGmainの中でローカルクラスを定義してない?
0795デフォルトの名無しさん
NGNGブレークポイントが設定できないということはありますか?
どうやらその行は実行すらされていないようなのですが
コンパイル、ビルドは通るんです。
もう何がなにやら・・・。わかる方お願いします。
0796789
NGNG#include<vector>
int main(){
struct Test{
short x;
short y;
};
std::vector<Test> structData;
return 0;
}
という、ただ単に構造体のvectorを宣言しているだけです。
なぜローカルクラスを定義していけないのか、がわかりません。
0797デフォルトの名無しさん
NGNGtemplateの引数に使えないだけだろー
0798デフォルトの名無しさん
NGNGstd::vector<Test>のメンバ関数の中でインライン展開できない物が出たときにTestがローカルだと困るから、
C++ではテンプレートにはローカルの構造体・クラスを指定できない仕様になっている。
なのでmain()の外でtestを宣言しろ。
0799789
NGNGわかりやすいですね。
main()外でstructを定義したら、ちゃんとコンパイルできました。
以後、気をつけます。
ありがとうございました。
0800795
NGNG0801795
NGNG配列で宣言してaccess violationなのは
やっぱりクラスの中身が悪いんでしょうか?
0802デフォルトの名無しさん
NGNG0803デフォルトの名無しさん
NGNG0804デフォルトの名無しさん
NGNG0805デフォルトの名無しさん
NGNGインクルードファイルが破損しているのでしょうか?
それともDirectX9.0 SDKのdsound.hがもとからおかしいのでしょうか?
どうしてこのようなエラーがでるのか分かりません。
教えてください。おねがいします
C:\Program Files\Microsoft DirectX 9.0 SDK (October 2004)\Include\dsound.h(305) : error C2146: 構文エラー : ';' が、識別子 'dwReserved1' の前に必要です。
C:\Program Files\Microsoft DirectX 9.0 SDK (October 2004)\Include\dsound.h(305) : error C2501: 'DWORD_PTR' : 識別名を宣言するのに、型が指定されていません。
C:\Program Files\Microsoft DirectX 9.0 SDK (October 2004)\Include\dsound.h(305) : error C2501: 'dwReserved1' : 識別名を宣言するのに、型が指定されていません。
C:\Program Files\Microsoft DirectX 9.0 SDK (October 2004)\Include\dsound.h(306) : error C2146: 構文エラー : ';' が、識別子 'dwReserved2' の前に必要です。
C:\Program Files\Microsoft DirectX 9.0 SDK (October 2004)\Include\dsound.h(306) : error C2501: 'DWORD_PTR' : 識別名を宣言するのに、型が指定されていません。
C:\Program Files\Microsoft DirectX 9.0 SDK (October 2004)\Include\dsound.h(306) : error C2501: 'dwReserved2' : 識別名を宣言するのに、型が指定されていません。
0806デフォルトの名無しさん
NGNG破損してるんなら自分で読めばわかるだろ?
0807デフォルトの名無しさん
NGNG0808デフォルトの名無しさん
NGNG必要なファイルを先にincludeしてないんじゃないか?
0809デフォルトの名無しさん
NGNG0810デフォルトの名無しさん
NGNGワロタ!!
0811805
NGNG{
DWORD dwSize;
DWORD dwFlags;
GUID guidDSFXClass;
DWORD_PTR dwReserved1; ←305行目
DWORD_PTR dwReserved2;
} DSEFFECTDESC, *LPDSEFFECTDESC;
これをみても私には何処が間違っているのか分かりません。
0812デフォルトの名無しさん
NGNG0813デフォルトの名無しさん
NGNGという型はどのインクルードファイルを読み込めばよいのでしょうか?
そうすればOKですか?
0814デフォルトの名無しさん
NGNG0815デフォルトの名無しさん
NGNG・調べない
・試さない
・情報を小出しにする
0816デフォルトの名無しさん
NGNG0817デフォルトの名無しさん
NGNGそれぐらいgrepなりなんなりで検索しろよ…
basetsd.h
0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNG追っ払うには質問に答えればいいからな
0820デフォルトの名無しさん
NGNGもう疲れました
0821デフォルトの名無しさん
NGNG| バグで2〜3日まったく進んでません。もう疲れました。
\
 ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ・∀・) ∧ ∧ < おめーのバグだろ、ゴルァ!!
( ⊃ ) (゚Д゚;) \____________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__
 ̄ ̄ ̄日∇ ̄\| BIBLO |\
 ̄ ======= \
0822デフォルトの名無しさん
NGNGその謙虚さがカッコいいな。
0823デフォルトの名無しさん
NGNGバグ回避とは逃げではなくて、賢い回り道だ。
0824デフォルトの名無しさん
NGNG0825デフォルトの名無しさん
NGNGもう疲れました
0826デフォルトの名無しさん
NGNGそんなにその質問の答えが聞きたいのか?
0827デフォルトの名無しさん
NGNG{
std::string strTest;
int nTest;
} STest;
とういような構造体を定義しておいて、
STest sTest;
::memset(&sTest, 0, sizeof(STest));
sTest.strTest = "test";
のように、memsetで初期化した後に、strTestに入力を
行ってもいいんでしょうか?
個人的には、非常に気持ち悪いのですが、VC6では、
きちんと動作しているように見えます。
初期化だけが目的ならコンストラクタでやれと言われそうですが、
宜しくお願い致します。
0828デフォルトの名無しさん
NGNG壊している恐れがある。
0829●
NGNG0830627
NGNGお返事ありがとうございます。
そう言われて見るとそうですね。やっぱり危険ですよね。
sTest.strTestがNULLなのに、入力できているので不思議です。
どうして、動いてるんでしょう?
STLに詳しくないため、std::stringが中でどういうことを
やってるのか分かりませんが、危険な感じはしますね。
0831デフォルトの名無しさん
NGNGhttp://www.ijg.org/
JPEGライブラリをインクルードして使いたいのですがライブラリの構築がうまくいきません。
configureってどうすればよいのですか?
0832●
NGNG0833デフォルトの名無しさん
NGNGC++ では使わない
0834デフォルトの名無しさん
NGNG'configure' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
'./configure' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
ってなってしまうんですm(_ _)m
0835831=834
NGNG'.' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
でしたm(_ _)m
0836デフォルトの名無しさん
NGNG>でしたm(_ _)m
だから何?
無能にも程がある
0837831=834
NGNGスレ違いになってしまいそうですが、Windowsのコマンドプロンプトで
exe拡張子の無いこのconfigureを実行するにはどうしたらよいのでしょうか。
0838デフォルトの名無しさん
NGNG今後質問するときは環境とか小出しにしないように
というか、テンプレをよく読むように
0839デフォルトの名無しさん
NGNG0840デフォルトの名無しさん
NGNGWindowsでやりたいならどちらか選べ
(1) cygwin環境を入れてconfigure
(2) MSVC入れてmakefile.vc をnmake
0842デフォルトの名無しさん
NGNG0843デフォルトの名無しさん
NGNG0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNGオイオイ。 >>843 は文字列って言ってるだろが。
DWORD a;
sfscanf("0x000A0015", "%i", a);
0846845
NGNGsscanfだた。
0847デフォルトの名無しさん
NGNGちなみにWindowsでiniファイルとして扱える書式ならGetPrivateProfileIntでも読める
0848デフォルトの名無しさん
NGNG/ :::::::::;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;:::::::::::::::ヽ
i゙:::;:::::||::::::ii:::::::::::||::::::::::::::::::;:::::::::::::::::::::::::::゙i
i゙::::|;;;;| |;;;;| |::::::::::| |:::::::::::::::::||:::::::::::::::::::::::::::::|
. i゙::::::i ''''''''''' '───' |;;;;;;;;;;::::::::::::::::::::|
.|:::::::|,-====-´ ゙ヽ,,,,,,,,,,,,、 |:::::::::::::::::::|
|;::::::::|,-----、 ~ニニ,,_` |:::::::::::::::::::| 二次元配列は
`ヽ、i (、i´ノ ´い,, ノ ' |;;;::::::::::::::/ なんで、ポインタのポインタで渡せられへんの?
. i ^~~~ー==-- ー'-+、 / ゙-、;;;;/
{ ヽゝ '-'~ノ
λ ''゙゙゙'''-''---、 /-'^
ヽ, ^~^ (
/ `丶 、 , - /^l
| /( ノ `''''''´~ __, - ' ゙i、
0849デフォルトの名無しさん
NGNG/ ヽ\ /
// / / ヽヽ ヽ〈
ヽ、レ! { ム-t ハ li 、 i i }ト、
ハN | lヽ八l ヽjハVヽ、i j/ l !
/ハ. l ヽk== , r= 、ノルl lL」
ヽN、ハ l ┌‐┐ ゙l ノl l
ヽトjヽ、 ヽ_ノ ノ//レ′
r777777777tノ` ー r ´フ/′
j´ニゝ l|ヽ _/`\
〈 ‐ 知っているがlト、 / 〃ゝ、
〈、ネ.. .lF V=="/ イl.
ト |お前の態度がとニヽ二/ l
ヽ.|l. 〈ー- ! `ヽ.
|l気に食わない lトニ、_ノ ヾ、
|l__________l| \ ソ
0850デフォルトの名無しさん
NGNGbugの修正が困難だよ
どうしよう
なんかいい方法ないですか?
0851デフォルトの名無しさん
NGNGアルゴリズムを根本から見直す
0852848
NGNGふざけた感じになってしまいました。
すいませんでした。
できたら教えていただけませんでしょうか
渡せるのですか?
0853デフォルトの名無しさん
NGNG0854デフォルトの名無しさん
NGNG完全に別のプロジェクト立ち上げて、ためしに組んでから
別のライブラリ専用のプロジェクト立ち上げて作ってます?
どうも使う段階になってエラーが発覚したときの
ライブラリデバッグのスマートな方法がわかりません。
0855848
NGNGなにか特別なことする必要があるんですか?
アフォなので詳しく教えてください!
0856デフォルトの名無しさん
NGNG再帰が深くならなくてすむような
再現データを食わせてみる。
都合のよい小さな再現環境がすぐに
作れなければ
再帰が深くなるたびにデータは狭まるか
答えに近づくかするはずだろうから
おかしくなるデータの範囲を
デバッガやログで絞り込む。
0857デフォルトの名無しさん
NGNG本読んで一から勉強したほうが早いっぽ。
0858デフォルトの名無しさん
NGNG好きなデータを突っ込める
テスト用のメインプログラムを作る。
絶対作れ。
特に
間違った呼び出し方をしたときに
ちゃんとエラーコードや例外を返せるかとかのテストは
本物の呼び出し元プログラムじゃ
すげー面倒っつーかほとんど不可能。
最近はJUnit VBUnit CppUnittとか便利なのがある。
0859デフォルトの名無しさん
NGNGRubyで言う、attr_accessor、つまりprivateのメンバ変数に対して
publicのset、get関数を作ってくれるようなシステムが
何かしらのテンプレートを介して使えたりするのでしょうか。
(標準ヘッダを使うではなく、プロジェクトの共通ヘッダとして手書き実装でも可です)
アクセッサを作るのが非常にマンドいんで、何とかしたいと思い
色々検索してみたのですが見つからず……。
宜しくお願いいたします。
0860デフォルトの名無しさん
NGNGBCCでいうところのこんなやつか?
class hoge {
public:
__property int moge = { read=_moge, write=set_moge };
private:
int _moge;
void set_moge(int v){ _moge = v; }
};
0861デフォルトの名無しさん
NGNG0862デフォルトの名無しさん
NGNG多少違うがこんな感じか?
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();
0863859
NGNG私の手元はC++BuilderでなくVC++なので……。
なお、VC++では__propertyを使うと変数をいじっているようで
実は関数を介しているっていう奴が実装できるらしいですね、
使った事ないんですが……。
諦めて地道に作れやって事なのかな…… orz
0864デフォルトの名無しさん
NGNGpublicだけじゃダメなの?
不用意に参照されないようにするため?
0865デフォルトの名無しさん
NGNGうん。
0866859
NGNGありがとうございます。
さらに修正を加え(readonlyとか)、自分のものに使わせて頂きました。
激しく便利!
(・Д・)こ、これがテンプレートの力なのかっ……!
0867859
NGNGものに適用しようと思ったとき、そのメンバへのアクセスを指定したい時は
どのようにしたら良いでしょうか。
>>862ソースで言うところの
value_with_accessor<int> m;
のintがクラスや構造体の時、mのメンバへのアクセスということです。
そういう時専用のテンプレートを作る事は
止むを得ないとは思うんですが、さらのそのメンバのメンバとかになると
気が遠くなってきます。ダメなのかなぁ……。
0868デフォルトの名無しさん
NGNG>>862を改造してもread-onlyにはできない。
きめ細かなアクセス制限を施したいならアクセス関数を書けばいい。
setter/getterを用意するなら、メンバへのアクセスを制限する理由はないんじゃないか?
0869デフォルトの名無しさん
NGNG#私ゃエディタのマクロで作ってるけど。
0870859
NGNGやはりエディタですか。WZにがんばってもらおう……。
デスマ]λ... ドウセオレハマケグミダ...
でもテンプレートたのすぃ事は判明しましたw
0871デフォルトの名無しさん
NGNG0872デフォルトの名無しさん
NGNG流れがつかみにくくなりバグフィックスも難しくなる
もう疲れました
たかだか1000行程度なのにバグばっか
この先もっとバグが増えていくとなると気が遠くなります
プログラマーのみなさんの大変さがわかりました
0873デフォルトの名無しさん
NGNG関数の�狽ノついてどb、してもよく分bゥらない点があb閧ワす。
下の関数の引数の渡し方は、どう違うのでしょうか?
void funcTest( char* chrArg ) { ... };
void funcTest( char[] chrArg ) { ... };
0874デフォルトの名無しさん
NGNG細かい機能ごとなりの関数に分けるといいよ
>>873
配列とポインタの違い?それ以外何?
0875デフォルトの名無しさん
NGNG0876デフォルトの名無しさん
NGNG下の書き方はCでもC++でも許可されていません。
0877デフォルトの名無しさん
NGNGそら全体の設計が悪いんだよ。
C++を使ってるならオブジェクト指向や
デザパタの入門書を読んでごらん。
一度頭を打ってから読むと有難味が
よく判るよw
0878デフォルトの名無しさん
NGNGchar[] chrArg なんて形は無いのでは?char chrArg[] ならあると思うけれど。
確か、関数の仮引数の最後のものだけはchrArg[]としてもポインタとして働くはず
だったので、引数が一つならどちらもポインタになると思うけれど、ポインタの方で
書くのが一般的だと思う。
>>875
本当ですか?
0879デフォルトの名無しさん
NGNG>> 関数の仮引数の最後のものだけはchrArg[]としてもポインタとして働くはずだったので、
引数が一つならどちらもポインタになると思うけれど
上は全部間違いです
関数の仮引数としてのchrarg[]の最後の[]だけはポインタとして働くはずだったので、
[]が一つならどちらもポインタになると思うけれど
が正しいです
自分で読み返して何書いてるんだかって感じでした
0881デフォルトの名無しさん
NGNGどっちにしろ間違いです
0882デフォルトの名無しさん
NGNG一から勉強しなおせ。
0883デフォルトの名無しさん
NGNG0884デフォルトの名無しさん
NGNG名前、国語の点数、。数学の点数、英語の点数が書いてあるテキストを読み込んで
点数を合計して トップ10を表示するプログラムを作りたいのですが
点数を読む方法が解りません お手数かけますがよろしくお願いします
[テキスト]
ななしさん 30 40 50
ななしさん2 20 50 60
:::
200人まで続きます
0885デフォルトの名無しさん
NGNG何が分からないのですか?
ファイルの読み込み?
0886デフォルトの名無しさん
NGNG宿題スレ行ったほうがいいぞ。
宿題ならscanfで充分だと思うけど、
ここだと小難しく考える連中が多いからな。
0887デフォルトの名無しさん
NGNGscanf()ですか……
小難しいも何も、阿呆につける薬はないな。
0888デフォルトの名無しさん
NGNG戻すことはできないのでしょうか。
というのもperlでsystem関数でCのモジュールを呼んでいるのですが
その戻り値にバッファのデータを返したいのです。
現状では、アドレスが返ってしまっているようです。
0889デフォルトの名無しさん
NGNG0890デフォルトの名無しさん
NGNGありがと。CppUnit挑戦してみます。
0891デフォルトの名無しさん
NGNGごくまれにTRACE()を使用すると、
atltracemodulemanager.hののCAtlTraceProcessクラスのModuleCount()という関数で例外が発生してしまいます。
再現方法もまだわかっていないのですが、とにかくTRACE()をやめることで回避できるようです。
しかしこれが原因でTRACE()で落ちる、という理由がわかりません。
どなたかご存じでしょうか?
0892デフォルトの名無しさん
NGNG#awkにもあるんだからないとは思わないけど。
Cで標準出力に出させてそれをパイプで取得するか、>889の言うようにファイル経由か。
0893デフォルトの名無しさん
NGNG>データを先頭だけでなくすべてのデータを戻り値として
perlはよく知らないが、構造体を使えば出来なくはない。
でもperlのモジュールがそんなアホな仕様になってるわけがない。
もう一度よく仕様読んだほうがいいぞ。
0894デフォルトの名無しさん
NGNGperlモジュールをCで書くXSじゃないよ
0895デフォルトの名無しさん
NGNGVC7はよくわからんが、TRACE()の文字上限こえたんじゃない?
0896デフォルトの名無しさん
NGNGfriend class
ってのは、
class A{
friend classB;
public:
・・・・・
private:
・・・・・
}
class B{
・・・・・
・・・・・
}
としたら、BからAのpublic, privateを問わずあらゆるメンバを使用可能になるのではないのですか?
GCCを使っているのですが、BのメンバからAの変数やら関数を使おうとしたのですが、
undefine 〜
とエラーが出ます。
なにかヒントになるようなサイトとか助言ありませんか?
0897デフォルトの名無しさん
NGNGBでAを触ってるとき
ちゃんとAのクラス定義はincludeしてる?
0898デフォルトの名無しさん
NGNG0899デフォルトの名無しさん
NGNG(y-x>=0)&&((x!=0)&&(y!=0))&&((x!=1)&&(y!=1))
でいいんでしょうか?
0900デフォルトの名無しさん
NGNG反例 (1,2)
(y-x>=0) && !((x==0&&y==0)||(x==1&&y==1))
じゃね?
0901デフォルトの名無しさん
NGNGありがとうがざいます
うまくいきました
0903デフォルトの名無しさん
NGNGアンカーが1個ずれてると思割れ目
0904デフォルトの名無しさん
NGNG0905デフォルトの名無しさん
NGNGはい、てかむしろ同じヘッダーファイルなのですが。
前方宣言?ってのをしてみても駄目でした・・・
いっそソース晒したほうがはやいですかね?
0906デフォルトの名無しさん
NGNGttp://www.tcp-ip.or.jp/~ikken/cpp/txt/t12.C.txt
これと比較しる
0907デフォルトの名無しさん
NGNGifstream::getline 用のバッファは
char* 型ではなく string 型で代用できないのでしょうか?
動的にメモリを確保する分では常に確保していなくてはいけないし、
確保できる上限も心もとないんです
他に、代用できる方法もあればその方法も伝授お願いします
0908デフォルトの名無しさん
NGNG0909デフォルトの名無しさん
NGNGerror LNK2005: "struct a b" (...............) は既に WinMain.obj で定義されています。
というエラーが出ました
struct a bの構造体宣言はWinMain.cppとgame.cppの両方でしています
その宣言は
struct a
{
int x,y;
}b;
です
どこがいけないのでしょうか?
0910909
NGNGextern struct a
{
int x,y;
}b;
にしたら解決しました
変数だけじゃなくて構造体にもexternをつけれるんですね
かいけつしました
0911デフォルトの名無しさん
NGNGそりゃ両方で定義したらまずいに決まってるだろ。
externしる。
0912911
NGNG0913デフォルトの名無しさん
NGNG構造体でも変数には違いないからな
っていうかそんなのヘッダファイルに書けYo
0914デフォルトの名無しさん
NGNG解決しますた。�dxです
0915909
NGNG俺って天才かも
0916デフォルトの名無しさん
NGNGラウンジに質問のソースを上げました。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=129&fi=no
2次元配列の中身を表示する単純なプログラムを、少しややこしく書いたものです。
テストは2回行っており、1回目は for loop 内で、2回目はべた打ちで、
まったく同じコードを書いているつもりなのですが出力結果は異なります。
これらのどこに違いがあるのか、時間のあります方はどうかご教示願います。
環境は winXP、コンパイラは bcc5.5 と g++3.3.1(cygwin) で試しました。
宜しくお願い致します。
0917デフォルトの名無しさん
NGNGp[i].reset(new Tester<double*>(x[i], n));
の次に、
for(int j=0; j<=i; j++)
{
cout << "Tester[" << j << "]: ";
p[j]->disp();
}
を追加してみれば分かると思うよ
0918916
NGNG早速のご回答をありがとうございます。
なるほどおっしゃるコードで、どうやら Tester内の const参照が
for loop で初期化したときのみ、全インスタンスで共有されてしまって
いるという状況を知ることができました。
しかし未だに原因がわかりません。試しに示された j に関するループを、
元のコード同様べたべたに展開してみましたが、やはり結果が異なって
出力されます。この原因について、もう少しヒントを頂ければ幸いです。
0919916
NGNGさらに試行錯誤したみたところ、以下の事実がわかりました。
元のコードのベタ打ち部分を、次のように書き換えます。
//----------------------------------
// テスター初期化(2回目)
do { // do loop は必ず1回のみ実行される
int i=0;
// if(i<N) break; // この文の有無により挙動が変化
p[i].reset(new Tester<double*>(x[i], n));
i++;
p[i].reset(new Tester<double*>(x[i], n));
i++;
p[i].reset(new Tester<double*>(x[i], n));
} while (0);
すると、「この文の有無により」で示された行のコメントを外した瞬間、
for loop と同じ挙動を示しました。条件に用いている比較は常に偽です。
ますます訳がわかりません。ご存知の方はお助け頂けませんでしょうか。
0921デフォルトの名無しさん
NGNGそこからキャプションのリストを作りたいのですが、
キャプションを\nで区切ろうとすると改行にならずに「↑」みたいなものに文字化けします。
キャプションを取得してからの処理は、
リストとして確保したバッファにキャプションと「\0」を追加していくというやり方をしています。
文字化けを解決する方法をお教えください。
0922デフォルトの名無しさん
NGNGfor (int i=0; i<N; i++) {
p[i].reset(new Tester<double*>(x[i], n));
と
for(int j=0; j<=i; j++)
{
cout << "Tester[" << j << "]: ";
p[j]->disp();
}
の間に、
switch(i)
{
case 0: p[i].reset(new Tester<double*>(x[i], n)); break;
case 1: p[i].reset(new Tester<double*>(x[i], n)); break;
case 2: p[i].reset(new Tester<double*>(x[i], n)); break;
}
を追加してみると多分分かるよ
0923916
NGNGご回答ありがとうございます。
早速試してみました。
残念ながら私には、switch文の挿入にどのような意味があるのか
よくわかりませんでした。単に、
p[i].reset(new Tester<double*>(x[i], n));
をもう一度行っているだけに思われます。不勉強ですみません。
結果はやはり、for loop とべた展開とで異なりました。
重ね重ね申し訳ありませんが、もう少しお付き合いくださると嬉しいです。
0925デフォルトの名無しさん
NGNG厳密には現クラスでvoidでないコンストラクタのみでもいけるようですが,
そのクラスを継承した子クラスではエラーが出てますます意味不明です.
理不尽な制約のように思うのですが・・・
0926925
NGNG> 引数がvoidでないコンストラクタ「のみ」を持つクラスはなぜ許されないんでしょうか?
0927デフォルトの名無しさん
NGNG具体的にどんなコードよ。簡単なのをはつけてみれ。
0928デフォルトの名無しさん
NGNG子クラスは親クラスのコンストラクタ引数を供給しなければならない。
struct Base
{
Base(int n){}
};
struct Derived : public Base
{
Derived(): Base(4){}
};
0929デフォルトの名無しさん
NGNGclass Base {
public:
Base(int i) {}
};
class Derived {
public:
Derived(void)
: Base(0) /*←これ*/{
}
};
を書いてないんじゃない?
もしそうならもう一度入門書読み直してまいれ。
0930929
NGNGさらに既に回答が来てて尚恥ずかしくて死ぬ。
0931デフォルトの名無しさん
NGNGエラーでもいいかも
>undefine 〜
だけじゃさすがにわからんです
0932925
NGNGなるほど!そういう構文があったんですね.
DelphiやらRubyやらはよく使ってるんですが,
C++はあまり深入りしてなかったので細かいしきたりを知りませんでした.
ありがとうございます.
C++本を読んで勉強しなきゃいけませんね.
0933デフォルトの名無しさん
NGNG0934デフォルトの名無しさん
NGNGatoi関数の逆(int形の整数を文字列に変換)の関数はありますか?
ないならこのような処理はどうすればいいですか?
0935デフォルトの名無しさん
NGNG0936デフォルトの名無しさん
NGNG環境依存でいいなら_itoa
0937デフォルトの名無しさん
NGNGboost::lexical_cast<>(推奨)
std::stringstream
std::strstream(非推奨)
snprintf(C99では規格に入っている。C89・C++では規格外)
sprintf(規格内。ただしかなり慎重に使わないと危険)
0938デフォルトの名無しさん
NGNGRuby!!!!!!!!!
0940デフォルトの名無しさん
NGNG0941Ruby >>>>>>>>>>> C++
NGNG0942デフォルトの名無しさん
NGNG0943デフォルトの名無しさん
NGNG自作自演乙
0944デフォルトの名無しさん
NGNG0945デフォルトの名無しさん
NGNG0946デフォルトの名無しさん
NGNGみなさん realloc() したいときはどうしてますか?
0947デフォルトの名無しさん
NGNG0948デフォルトの名無しさん
NGNGrealloc つかう
0949デフォルトの名無しさん
NGNGrealloc()とか言ってる時点でまだC++の初心者だって事がバレバレ。
コンテナ使えばいいし、そもそもデストラクタ処理が重すぎる。
0950デフォルトの名無しさん
NGNGstd::vector
0952デフォルトの名無しさん
NGNGそこが不便なんですよねぇ。
↓こんなことやったらあかんでしょ?
int* p = new kint[10];
p = realloc(p, sizeof(int) * 20); // 20 個分確保しているつもり
delete[] p;
0953デフォルトの名無しさん
NGNGポインタですらなるべく使わないでおこうというのが流行でしょ。
0955デフォルトの名無しさん
NGNG0956デフォルトの名無しさん
NGNG可変長配列はstd::vector<>を使うのがセオリー。これを使うだけでも
十分にC++を使うだけの価値があると思うが。
0957デフォルトの名無しさん
NGNGプライドというか、C++ に溺れないための対策なんです。
0958デフォルトの名無しさん
NGNGそれはつまり、なるべく発展的なことはしないということかな?
0959デフォルトの名無しさん
NGNGvector はよく使うんですが、それ以外にも方法はないものかと思って。
vector ってどうやって動的にメモリを変更しているんでしょうね。
やっぱり realloc() 使ってるんでしょうね。
0960デフォルトの名無しさん
NGNGC++に溺れると何か不都合でもあるの??
0961デフォルトの名無しさん
NGNGそんな感じです。
リファレンスやら const やら template は、限定的に使える限りは使いますが、
他のクラス設計に伝播的に影響を及ぼすと考えられる場合は、できるだけ使わないですね。
特にリファレンスは、関数の const & 引数でしか使わなくて、
クラス メンバに リファレンスをもたせたくはないです。
0962デフォルトの名無しさん
NGNG君ね、C云々C++云々言う前にCの勉強やってるの?
まずはmallocと同じ物を自分で実装してみたらどう?
0963デフォルトの名無しさん
NGNGもういいから二度とC++は使うな。
0964デフォルトの名無しさん
NGNGじゃnew/deleteじゃなくてmalloc/realloc/free使えば?
0965デフォルトの名無しさん
NGNG設計やコードの見通しが悪くなると思っています。
もちろん C++ を完璧に使いこなせる人がたくさんいれば問題ないですが、
現実にはそうではないですし。
シンプルな設計やコードがベストという意味で、「C 的 C++」にこだわりたいんです。
0966デフォルトの名無しさん
NGNGmalloc/realloc/free の実装はやったことありますよ。
WinAPI の Heap*() API を使えばすぐできます。
0967デフォルトの名無しさん
NGNGnewの配置構文使えばそれらしいことができる。
new(ポインタ変数名) クラス名;
0968デフォルトの名無しさん
NGNG何かまずいこといいましたか?
C++ の使い方として悪いポリシーでしょうか。
0969デフォルトの名無しさん
NGNGこれはやったことがあるんですが、C++ 標準で用意されていないですよね。
オペレータを定義するしかないですよね。
その実装はやはり realloc() で、となるのか。。。
0970デフォルトの名無しさん
NGNG現在の私の使い方としては、クラスは new/delete で、
動的にサイズが変化するバッファの場合は malloc()/realloc()/free() で、
という使い方をしています。
やはり C++ から完全に malloc()/realloc()/free() を排除しないほうがよいかと。
0971デフォルトの名無しさん
NGNGnewは解禁しておいてvectorは解禁しないそのポリシー
その基準は?
0972デフォルトの名無しさん
NGNGBjarne Stroustrupのプログラミング言語C++ 第3版に書いてたが、
標準じゃないの?
0973デフォルトの名無しさん
NGNGvector含めSTLコンテナはデフォルトではstd::allocatorを使ってメモリ割り当てを行っている。
http://www.microsoft.com/japan/developer/library/vclang/memory_allocator.htm
(コンテナのテンプレート引数で指定するので自作のクラスで置き換えることもできる。)
そのstd::allocatorにもrealloc相当の物は(残念ながら)無い。
コンテナでは予めやや大きくバッファを取り、必要に応じてコンストラクタ・デストラクタを起動させ、
バッファの空きが無いときには新たに広いメモリを割り当てて、そこにコンストラクト済みのデータを移動させる、
なんてことをやっている。
0974デフォルトの名無しさん
NGNGつまり、動的バッファがほしいときは、常に vector を使え、それで十分だ、
ということですか?
0975デフォルトの名無しさん
NGNGあ、標準でしたか。
次のコードは VC6 ではとおらなくて、VC7.1 ではとおりました。
int main(void)
{
int* p = new int[10];
p = new(p) int[20];
delete p;
return 0;
}
0976デフォルトの名無しさん
NGNG0977デフォルトの名無しさん
NGNGそうですね。VC6 の STL を見るとそんな実装になってる。
これは(ある程度)無駄ですね。
まぁ、realloc() の実装を考えてみると、同じようなことをやってると思うので、
たいしたオーバーヘッドではないのかな。
0978デフォルトの名無しさん
NGNG0979デフォルトの名無しさん
NGNGすいません、教えてください。 m(_ _)m
お願いします。
0980デフォルトの名無しさん
NGNGあ、delete[] の間違いです。
これは知ってますんで。
0981デフォルトの名無しさん
NGNGなんの分野でもあるわけだ。
お払いしとこ。
南無阿弥陀仏南無阿弥陀仏。
0982デフォルトの名無しさん
NGNG何か使い方が間違ってる気がするんだけどなあ
コンパイルは通ったよ
0983デフォルトの名無しさん
NGNG0984デフォルトの名無しさん
NGNG使い方がおかしい。
allocateがp = ::operator new(n * sizeof(T));
constructが::new((void*)p) T();
destroyがp->~T();
deallocateが::operator delete((void*)p);
0986デフォルトの名無しさん
NGNGTester<double[n]>
0987916
NGNGそれは一応試し済みでして、関数に配列を渡そうとすると実際には
ポインタが渡されるため、bcc5.5 で以下のエラーが得られました。
エラー E2285 main.cpp 32:
'Tester<double[20]>::Tester(double *,enum)'
に一致するものが見つからない(関数 main() )
0988デフォルトの名無しさん
NGNGconst Container& mc;
を
const Container mc;
にしてみれ
0989916
NGNGg++ 3.3.1 (cygwin) ですとコンパイルできて、且つ期待する動作が
得られました。どちらのコンパイラの解釈が標準準拠なのでしょうか。
両方で同じように記述する書き方はないでしょうか。
そして、for loop にしないで直接展開したコードを書いた場合に
コンパイルできてしまうのは一体何故なのでしょうか。最適化による
バグとか……?
いずれにせよ、朝早くのご回答を有り難うございました。
引き続き、情報をお持ちの方は宜しくお願い致します。
0990916
NGNGご回答ありがとうございます。
解決策の一つとして考えさせて頂きますが、その方法は、
(vectorなどを引数にした場合など)コンテナ全体のコピーを取ってしまうため
テスタークラスの振る舞いとパフォーマンスが大幅に変わることになります。
デフォルトコンストラクタにアクセスできないために無理やり auto_ptr
を用いている(直接 vector のテンプレート引数にしない) ことからも
わかるように、このテスタークラスは「なるべく変更を加えたくないクラス」
を想定しています。
しかし、貴重な意見に感謝いたします。
スレも残りわずかですが、さらに情報を頂ければ幸いです。
0991デフォルトの名無しさん
NGNGじゃ、言い出しっぺの法則で次スレ宜しく。切りもいいことだしね。
0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
NGNG違う
0994デフォルトの名無しさん
NGNGどう違うんですか?
0995デフォルトの名無しさん
NGNGa!=b かつ c!=d
!((a==b)&&(c==d))
(a==b かつ c==d) ではない
つまり a!=b または c!=d
さらにC++だと呼ばれる演算子がオーバーロードされてたりして・・・。
0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG一番簡単な方法は真理値表を書く方法。
例外が一つでもあれば両式は等価とはいえない。
s := (a!=b)&&(c!=d)
s':= !((a==b)&&(c==d))
a b c d s s'
0 0 0 1 0 1
0 0 1 0 0 1
0 0 1 1 0 0
...
両式は等価ではない。
0999デフォルトの名無しさん
NGNGあなたのコードがやろうとしてることはこういうことじゃない?
#include <iostream>
using namespace std;
template<class Container>
class Tester {
const Container &mc;
Tester();
Tester(const Tester &p);
Tester &operator = (const Tester &p);
public:
Tester(const Container &c): mc(c) {}
void disp() {cout << mc << endl;}
};
void init (Tester <int> *&p) {
int tmp (10);
p = new Tester <int> (tmp);
}
int main () {
Tester <int> *tester;
init (tester);
tester->disp ();
return 0;
}
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。