【初心者歓迎】C/C++室 Ver.7【環境依存OK】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNGただしその場合、質問者は必ず、環境を書きましょう。
【初心者歓迎】C/C++室【環境依存OK】
http://pc5.2ch.net/tech/kako/1059/10590/1059041347.html
【初心者歓迎】C/C++室 Ver.2【環境依存OK】
http://pc5.2ch.net/tech/kako/1067/10671/1067189450.html
【初心者歓迎】C/C++室 Ver.3【環境依存OK】
http://pc2.2ch.net/test/read.cgi/tech/1069719929/ (消滅?)
【初心者歓迎】C/C++室 Ver.4【環境依存OK】
http://pc2.2ch.net/test/read.cgi/tech/1073473867/ (消滅?)
【初心者歓迎】C/C++室 Ver.5【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1077102238/ (html化待ち)
【初心者歓迎】C/C++室 Ver.6【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1082182233/l50
【ラウンジ】質問が長い時はココを使うと便利
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG★初心者にVisual C++を教えるスレ★ Part12
http://pc5.2ch.net/test/read.cgi/tech/1083585833/l50
C++Builder相談室 Part9
http://pc5.2ch.net/test/read.cgi/tech/1080541814/l50
GCCについて part3
http://pc5.2ch.net/test/read.cgi/tech/1072484422/l50
Turbo C++ 5.0 プログラミング
http://pc5.2ch.net/test/read.cgi/tech/1030878794/l50
タダで使えるBorland C++ Part3
http://pc5.2ch.net/test/read.cgi/tech/1054390397/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
■ VisualC++(MFC限定)相談室 MFC10.dll■
http://pc5.2ch.net/test/read.cgi/tech/1074104008/l50
0004デフォルトの名無しさん
NGNGC言語なら俺に聞け! Part 81
http://pc5.2ch.net/test/read.cgi/tech/1085806791/l50
C++相談室 part31
http://pc5.2ch.net/test/read.cgi/tech/1086185282/l50
C/C++の宿題は私におまかせくださいませ 23代目
http://pc5.2ch.net/test/read.cgi/tech/1085149383/l50
【C++】template 統合スレ -- Part4
http://pc5.2ch.net/test/read.cgi/tech/1083550483/l50
プリプロセッサについて熱く語るスレ。
http://pc5.2ch.net/test/read.cgi/tech/1058203590/l50
タダで最強!フリーC/C++コンパイラ
http://pc5.2ch.net/test/read.cgi/tech/1035882599/l50
C統合・質問スレッド
http://pc5.2ch.net/test/read.cgi/tech/1068359871/l50
くだらない質問でもべっちょ偉そうに聞いていいスレ
http://pc5.2ch.net/test/read.cgi/tech/1069530956/l50
0005デフォルトの名無しさん
NGNG乙
0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG�dクス
0008デフォルトの名無しさん
NGNG乙かれ〜
0009デフォルトの名無しさん
NGNGtry{} catch(...) {}
引数の「...」には何か意味があるのでしょうか?
書籍とかで調べたのですがのってないです。
0010デフォルトの名無しさん
NGNG「C C++ 可変個 引数」とかで検索してみな
0011デフォルトの名無しさん
NGNGcatch(...)ですべての例外を補足することになる。
C++で不定引数を使う場面はこのcatchぐらい。
0012デフォルトの名無しさん
NGNG...は、放っておくとコンパイラが勝手に3文字入れて補完してくれます。
「まんこ」なんて文字が当てはめられる事も。
0013デフォルトの名無しさん
NGNGこれは throw ... を捕捉するためのものね
0014デフォルトの名無しさん
NGNGどうすればいいでしょうか?
0015デフォルトの名無しさん
NGNGRGB値の定義が不明だが、BMPを走査してRGBを取り出して表示すればいいんじゃないの?
0016デフォルトの名無しさん
NGNGどこか簡単な解説サイトか何かありませんか?
0017デフォルトの名無しさん
NGNGttp://black.sakura.ne.jp/~third/system/winapi/win117.html
0018デフォルトの名無しさん
NGNG(1) = 1*hoge;
(2) = 2*hoge;
:
という、ふつー通らないだろと思うコードがあったんだが
これ通るコンパイラって存在したりする?
とりあえず手持ちの、C for AIX(版不明)とgcc 2.95/3.3、VC6(SP6)で
通らなかった。
#だがC++でコンパイルすると宣言だけは通るっぽい。なーぜーだー
0019デフォルトの名無しさん
NGNGint(1), (2), (3); → 1, 2, 3;
になるからなんじゃないかな。
0020デフォルトの名無しさん
NGNGbase expともにgmp数でbase^expを計算させたいとき
expがgmp数のままでbase^expを計算する方法はありませんか?
expがgmp数のままでbase^expを計算しようとすると
warning: passing arg 3 of `__gmpz_pow_ui' makes integer from pointer without a cast
と叱られてしまいます。
もしくは、gmp数をunsigned intに戻す方法をおしえていただけませんか?
002220
NGNGReturn the value of op as an unsigned long.
に書いてあるのだろうということは分かっているんですが、
どう使ったらいいのかわからないんです。
unsigned long int mpz_get_ui (mpz_t amari);
としても、
warning: passing arg 3 of `__gmpz_pow_ui' makes integer from pointer without a cast
としかられて困ってるんです。
0024デフォルトの名無しさん
NGNG#include "gmp.h"
int main()
{
mpz_t a, b, c;
mpz_init_set_ui(a, 2UL);
mpz_init_set_ui(b, 128UL);
mpz_init(c);
mpz_pow_ui(c, a, mpz_get_ui (b));
mpz_out_str(stdout, 10, c);
printf("\n");
mpz_clear(a);
mpz_clear(b);
mpz_clear(c);
return 0;
}
0025デフォルトの名無しさん
NGNG2回もスレ違いな質問してしまってまたここで質問するのも恐縮なのですが、
C言語で ファイルにカキコミを行う際、
c:\\test\\test.txt
のようにするとTESTというフォルダがある場合はうまくいくのですが、
もともとTESTというフォルダがない場合の書式はどのようにすればよろしいのでしょうか?
当方BCC++を利用しております。
できればUNIXの環境での書式も教えていただけたら幸いです。
あ〜マルチのようで本当に申し訳ない。
0026デフォルトの名無しさん
NGNGmain()
{
printf("Hello World\n");
return 0;
}
ビルドできません
fatal error C1083: インクルード ファイルがオープンできません。'stadio.h': No such file or directory
というエラーが出ますが、どうしてでしょう?
初歩的な質問ですがよろしくおねがいします。
0027デフォルトの名無しさん
NGNG#include <stdio.h>
int main()
{
printf("釣られた?\n");
return 0;
}
0028デフォルトの名無しさん
NGNGそれでできました。
main()の前にintが必要だったんですね
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG>スレ誘導してくださった方ご迷惑をおかけしてすいません。
いや漏れが悪い。たらいまわしのようにしてしまってスマン...orz
Windows下では単純に
BOOL bRtn = ::CreateDirectory("C:\\test\\test", 0);
なのだが...
0031デフォルトの名無しさん
NGNGint main()
{
printf("こんにちは\n");
return 0;
}
中の文字を変えてやってみたらさっきとおんなじエラーが出ました。
fatal error C1083: インクルード ファイルがオープンできません。'stadio.h': No such file or directory
今度はmain() の前にintをつけているのにどうしてでしょうか?
0032デフォルトの名無しさん
NGNGboost::filesystem で出来ると思う
0033デフォルトの名無しさん
NGNGさようなら。
0034デフォルトの名無しさん
NGNG_mkdirってダメだっけ?
int nRtn = _mkdir("C:\\test\\test");
0035デフォルトの名無しさん
NGNG二段構えの釣りかよ
003631
NGNGsatadio.h→stdio.hのところでした
なんか非常にばかな間違えでした
これじゃ釣りに見えても不思議じゃない
0037デフォルトの名無しさん
NGNGvoid main()
{
int i;
for(i=0;i<1000;i++)
{
printf(">>31氏ね");
}
}
003831
NGNG0040デフォルトの名無しさん
NGNGPCを去年の6月に初めて購入した者ですが
プログラミングって何から始めればよいのでしょうか…
0041デフォルトの名無しさん
NGNG力になれなくて申し訳ないでつ
気を落とさずにまた来てくださいでつ
0042デフォルトの名無しさん
NGNGプログラムの文法よりも
アルゴリズムを学べ
0043デフォルトの名無しさん
NGNGまずは、自分がどうしてプログラミングを勉強したいのか、
(あるいは、本当に勉強したいのか) よく考えてみるところから
始めてみてはどうでしょうか。
0045デフォルトの名無しさん
NGNG最初にスレ違いと言った手前、一応補足。
Unixにはmkdir()がある。Windowsでも_mkdir()が使えるはずなので、それを使うのも手。
いずれにしても、両OSで共通のソースにしたいなら喩え中身が
CreateDirectory()やmkdir()だけでもそれだけで関数にしておくことをお勧めする。
いっそ、その他のOS依存関数もまとめておくと尚いいかと。
0046デフォルトの名無しさん
NGNGこのスレ的にはC/C++を学びたいと思っていることを前提にすべきかもしれんが、
もし貴方がExcel使いならマクロを登録してVBAから始めるのがいいかも。
0047デフォルトの名無しさん
NGNGMkDir系の関数はなんで処理系依存になって、
言語実装されなかったんですかね。
そんな抽象化の難しいもんじゃないような気がするんですが...
MkDir系がダメならOpen系(fopen)もダメだと思うんですが。
0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNGMFC C++でダイアログベースでアプリを作ってるのですが、
CStirngに格納されたデータ(\r\n入り)を印刷するときに、
DrawTextを使って印刷してるのですが、
複数枚にわたる印刷が出来ません。
どうしたらいいのでしょうか?
0054デフォルトの名無しさん
NGNGキーボードから5人分の年齢身長および体重を繰り返し構文を用いて年齢は1次元配列(age)身長と体重は2次元配列(date)
に読み込み以下の二つの条件を同時に満足するもののデータ(出席番号・年齢・身長・体重)と人数を画面に表示するプログラム
を作成せよ。
条件
1 身長が全員の平均値よりも高い。
2 体重が全員の平均値以下である。
と言う問題なんですが厨房のオレにはさっぱりで
数値や変数の型などは自由で良いみたいなので模範解答みたいのをお願いします。
よろしくお願いします。
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG#define SUTADIO <stdio.h>
#include SUTADIO
#define mein main
#define mosi if
#define boid void
#define faibu 5
#define wan 1
#define tuu 2
boid mein(){
float caunto;
float age[faibu];
float date[faibu][tuu];
int tincyo_heikin;
int taijuuu_heikin;
for(caunto=0; caunto<faibu; caunto=caunto=caunto+=wan){
printf("年齢 身長 体重? ");
scanf("%f %f %f",&age[(int)(char)(int)caunto],&date[(int)(char)(int)caunto][0],&date[(int)(char)(int)caunto][1]);
}
tincyo_heikin=taijuuu_heikin=tincyo_heikin=taijuuu_heikin=0;
for(caunto=0; caunto<faibu; caunto=caunto=caunto+=wan){
taijuuu_heikin+=date[(int)(char)(int)caunto][1];
tincyo_heikin+=date[(int)(char)(int)caunto][0];
}
taijuuu_heikin=tincyo_heikin=taijuuu_heikin/faibu;
tincyo_heikin=tincyo_heikin=tincyo_heikin/faibu;
for(caunto=0; caunto<faibu; caunto=caunto=caunto+=wan){
mosi(tincyo_heikin<date[(int)(char)(int)caunto][0] && taijuuu_heikin>date[(int)(char)(int)caunto][1]){
printf("年齢%f 身長%f 体重%f\n",*&age[(int)(char)(int)caunto],*&date[(int)(char)(int)caunto][0],*&date[(int)(char)(int)caunto][1]);
}}}
0057デフォルトの名無しさん
NGNG出席番号は?(w
0058デフォルトの名無しさん
NGNGEndPage
StartPage
0060デフォルトの名無しさん
NGNGしてみようとは思わんのかね、まったく・・
趣味グラマにしても、これから勉強始める素人にしても
駄目すぎだろ、それじゃ・・
0061デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNGだから、スレ違いだって。
VCスレか、MFCスレに逝け。>>3
0064デフォルトの名無しさん
NGNGint main(void)
{
int i=32,n=0;
printf("ASCIIコード 10進数 16進数 の順に表示します\n");
while(i<=126)
{printf("%c %-3d (0x%x) ", i, i, i);
i+=1;
n++;
if (n>=5)
{printf("\n");
}
}
}
これを改造して、ひらがなのASCIIコード
http://www.unicode.org/charts/PDF/U3040.pdf
をだしたいのですが、
int i=12353
while(i<=12447)
でやってもうまくいきません。
どうすればいいのでしょうか?
それと、アルファベットのASCIIコードと、ひらがなのASCIIコードを一緒に表示したい場合、
int i=32
while(i<=12447)
となるのでしょうか?
0065デフォルトの名無しさん
NGNG>ひらがなのASCIIコード
そんなものはない
0066デフォルトの名無しさん
NGNG#include <stdio.h>
int main(void)
{
char shimei[] = "Tarou";
printf("%s\n",shimei);
return (0);
}
「printf関数の中の配列shimeiは、全要素を一度に
扱うので、添え字は不要」となっており、
これはなんとなく分かるのですが、
では、このプログラムを
#include <stdio.h>
int main(void)
{
int shimei[] = {1,9,3};
printf("%d\n",shimei);
return (0);
}
と、配列をint型に作り変え、同じように
添え字を省略して、一度に表示できるのでは?と
したのですがうまくいきません。
どうしてなんでしょうか。よろしくお願いします。
0067デフォルトの名無しさん
NGNGそんないい加減な本は使うな。
0068デフォルトの名無しさん
NGNGint main(void)
{
int i=12353,n=0;
setlocale( LC_ALL, "Japanese");
wprintf(L"ASCIIコード 10進数 16進数 の順に表示します\n");
while(i<=12447)
{
wprintf(L"%c %-3d (0x%x) ", (wchar_t)i, i, i);
i+=1;
n++;
if((n%5)==0)
{
wprintf(L"\n");
}
}
}
006968
NGNG0070デフォルトの名無しさん
NGNGsetlocaleつかうんですか。
もう、初心者向けの本だけじゃダメですね。
リファレンス買わなきゃ。
LSI-C試食版じゃ動かないので、まだ確認はできませんが、
どうもありがとうございました。
0071デフォルトの名無しさん
NGNGこれってコマンドプロンプトでCのプログラムが実行されちゃうんですけど
不便なんで
メモ帳かどっかに実行結果が出るようになりません?
コピペできる方法でも結構です。
0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNG文字コードの勉強をし直せ
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNGごめんなさい。勉強します。
0078デフォルトの名無しさん
NGNG初期化をするって方法が、あったような気がしたのですが
なかったでしょうか?
検索して手持ちの本も探してみましたが見つからなくて
javaをちょっとかじってたので勘違いかもしれないのですが
0079デフォルトの名無しさん
NGNGint a;
a=5;
1/2*a;
と、
int a;
a=5;
1/2.0*a;
では計算結果は異なるのでしょうか?
0080デフォルトの名無しさん
NGNG上はint型下はdouble型
008179
NGNGということは計算結果は、2と2.5になるという事ですね!
ありがとうございました!
0082デフォルトの名無しさん
NGNGさらにいうと
上 int型 0
下 double型 2.5
1/2=0
1/2.0=0.5
008379
NGNGうーむわかりにくいですねぇ(笑
0084デフォルトの名無しさん
NGNG本で調べた所、演算子では無さそうなんですが。
あと、()の中は他の演算子よりも最優先に評価されるのでしょうか?
例えば、
*(pDest++)=*(pSrc++);
のような場合、どの順で評価されるのですか?
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNGint x;
x=5;
0.5*x;
この場合は計算結果はどのようになるのでしょうか?
0087デフォルトの名無しさん
NGNGやってみればいいじゃん。
0088デフォルトの名無しさん
NGNG手元にパソコンがないのでできないんですよ(汗
解答よろしくお願いします…
0090デフォルトの名無しさん
NGNGfloat * int → float * (float)int = float
0.5 * 5 → 0.5 * 5.0 = 2.5
009188
NGNGありがとうございました!
0092デフォルトの名無しさん
NGNGA+B、A-B,AB、BAを求めよ。
ただし、A、Bの初期値を変えた場合も利用できるプログラムであること。
という問題なんですが・・・
C言語始めたばかりの俺にはさっぱりです。良い例をください。
お願いします。
0093デフォルトの名無しさん
NGNGdoubleだろ。
0094デフォルトの名無しさん
NGNGint a[3][3]とint b[3][3]を用意して、そいつに初期値を定義。
あとは普通に行列の計算。
0095デフォルトの名無しさん
NGNGすっとぼけた回答をするなら、
まずはHello worldからはじめて、徐々にステップアップしようよ。
マジレスするなら、
宿題スレへ逝け。
「さっぱり(わからない)」なんてキーワード使う奴は、叩かれて当然。
0096デフォルトの名無しさん
NGNG(>>92に言ってるわけじゃないよ)
0097デフォルトの名無しさん
NGNG返事が遅くなりましたがありがとうございました。
とっても助かりました
感謝感謝です
0098デフォルトの名無しさん
NGNG計算結果は捨てられます。
0099デフォルトの名無しさん
NGNG結合性のことすっかり頭に無かったです。。。
レスありがとうございました!
0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNGunixでCかC++で文字コードを変換(SJIS<->EUC)したいんですけど)
どうすればいいですか?
nkf使ってsystemで動かすのもナンセンスっぽいし・・・
いいライブラリとかありませんか?
0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNGあっさり解決しました。
感謝です。
0104デフォルトの名無しさん
NGNGに相当する処理をiostreamを使ってやりたいんだけどどうしたらいいですか?
(0x0F -> 0f, 0xFF -> FFみたいに表示させたい)
std::cout << 他の出力 << 16進表示
のように使いたいんでprintfは使いたくないので…
0105デフォルトの名無しさん
NGNGint n = 0xff;
std::cout << std::hex << n;
0106デフォルトの名無しさん
NGNGコマンドプロンプトで実行したのですが、
現在の時刻 22:02:45.36
新しい時刻を入力してください :
と出てきます。なぜでしょうか?
同じソースをgccでコンパイルした場合は
きちんと実行できました。
#include <time.h>
#include <stdio.h>
int main(void)
{
time_t time1, time2;
long l;
time(&time1);
for (l=0; l<100000000; l++);
time(&time2);
printf("空ループ1億回の時間: %f秒\n", difftime(time2,time1));
return 0;
}
0107デフォルトの名無しさん
NGNGC> time /?
0108デフォルトの名無しさん
NGNGなにもかわりませんが・・・
0109デフォルトの名無しさん
NGNGあー、もしかしてtime.exeって名前にしてない?
0110デフォルトの名無しさん
NGNGそうですが・・・なにかあるんですか?
0111デフォルトの名無しさん
NGNGtimeはWindows標準のコマンドなんでtimeって打ってもtime.exeは実行されない
0112デフォルトの名無しさん
NGNGtime.exeからtimer.exeに名前を変えたらうまくいきました
�dくすです
0114デフォルトの名無しさん
NGNG0115デフォルトの名無しさん
NGNG<< std::setw(2) << std::setfill('0')
とりあえず表示されるようにはなるだろうけど、たぶん罠に嵌るだろう。
0116デフォルトの名無しさん
NGNGとりあえず、マニピュレータ/処理子を使って書式を指定するってことさえ分かれば、
あとは開発環境のマニュアル読むなりC++の教科書見るなり、いくらでも調べられるやん。
当然、桁揃えを指定するマニピュレータもあるわな。
0117デフォルトの名無しさん
NGNGboost::formatとかがお勧め
0118デフォルトの名無しさん
NGNGstlPort-4.6.2をnmake -f vc71.makでビルドするとき、
_STLP_NO_OWN_IOSTREAMSのコメントを外しているとエラーが出てビルド完了しません。
なんとかする方法ありませんか?
0119デフォルトの名無しさん
NGNGそのエラーってのが何かわからないと誰も答えようがないだろ?
0120118
NGNG.\dll_main.cpp(86) : error C2084: 関数 'void __cdecl _STL::__stl_throw_range_erroor(const char*)' はすでに実体を持っています。
.\dll_main.cpp(86) : error C2084: 関数 'void __cdecl _STL::__stl_throw_out_of_range_erroor(const char*)' はすでに実体を持っています。
・・・のようなものがたくさん出てきます
0121109
NGNG0122デフォルトの名無しさん
NGNG(かといって同一人物のとき両方にレスされると
全部漏れなワケだが...となるワケだが)
0123デフォルトの名無しさん
NGNG同じ方だと思っていました
>>109さん>>111さんありがとうございました。
0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNG超初心者的な質問をさせてください。
ダイアログベースでウインドウを作っているのですが、
もうひとつのダイアログを呼び出すにはどうしたらいいのでしょう?
それと、ボタン押下でアプリケーションを終了させるときは、
DestroyWindowでよいのでしょうか?
0126デフォルトの名無しさん
NGNG>>61-63
0127デフォルトの名無しさん
NGNG本を買って、一つ一つ例題を解いているのですが、scanfの例題をやった所、
本に書いてあるようにはなりません。
#include <stdio.h>
int main(void)
{
inta;
printf("整数を入力してください\n");
scanf("%d\n",&a);
printf("%dが入力されました\n",a);
return 0;
}
にした所、整数を入力した後「○○が入力されました」が表示されません。
なにかまたキーを押すとやっと表示されます。
「scanf」でググったりもしたのですが、要領を得ません。
なぜでしょうか?ご回答いただけたらありがたいのですが。
環境はXPHome LSI-C試食版を使用しています。
0128デフォルトの名無しさん
NGNGint a;
0129デフォルトの名無しさん
NGNGインタ君
0130デフォルトの名無しさん
NGNG0131127
NGNGソースではちゃんと int a; になってました;;
>>130さん
「標準入力 バッファリング」で検索をかけて調べた所、回答がでました!
>scanf() では、正しく入力しても最後の改行文字はバッファの中に残るため、おかしな動作になるときがあります。
とあったので、 scanf("%d",a); と改行を外したら上手く行きました!
本当にありがとうございました。
0132デフォルトの名無しさん
NGNGprintf 出力するとき
%d で良いのでしょうか?
0133デフォルトの名無しさん
NGNGVCの__int32なら正式には%I32dらしいけど、大きさが同じなんだからただの%dでいいんじゃないの。
0134デフォルトの名無しさん
NGNG{
int fib[20],i; /*・・・・☆*/
fib[1] = 0; fib[2] = 1;
for (i = 3; i < 21; i++){
fib[i] = fib[i-1] + fib[i-2];
}
for (i = 1; i <21; i++){
printf("fib[%d]=%d\n", i, fib[i]);
}
}
上記☆のfib[20]がどういった効果を持つのか良く分かりません
なぜ20だけで良いのでしょうか?fib[i]と書きそうなものですがこっちだとエラーが出ました。
0135デフォルトの名無しさん
NGNGhttp://homepage1.nifty.com/toshio-k/prog/c/
0136デフォルトの名無しさん
NGNGfib[20]と宣言したときの要素はfib[0]...fib[19]までだよな?
なんかあぶなっかしいな。
0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNGchar str1[256]を string str2にコピーしたいとき、どうすればよいのでしょうか。
string(str)というのがstr2(str1)という意味かと思いやってみましたができませんでした。
0140139
NGNG0141デフォルトの名無しさん
NGNGfor (;;)
って書く奴と
while (1)
って書く奴といるけど違いは何?
好みの問題?
0142デフォルトの名無しさん
NGNGうん。
0143デフォルトの名無しさん
NGNGなんだやっぱそっかー。
thx
0144デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNGそれって賢いのか?(w
0147141
NGNGへーそうなんだ。レスアリガトサン。
>>145
あーあったのか
>>146
初心者がドヂったの注意してくれる点では賢い罠。
確かにそんなの警告出されちゃおせっかいっちゃおせっかいだが。
ま、for(;;)でいっか。
0148デフォルトの名無しさん
NGNG0149デフォルトの名無しさん
NGNG(LPSTR) CHoge::Hoge
という感じにするとHogeの文字列が戻るとして
MessageBox(NULL,CHoge::Hoge,"hoge",MB_OK);
と確認するとしっかり文字列が表示されるんですが、
もう一度
MessageBox(NULL,CHoge::Hoge,"hoge",MB_OK);
とやると、何も表示されないか全く別の文字が出てきます。
何で続けて呼び出すと文字列が出てこないんでそか。
0150デフォルトの名無しさん
NGNG>(LPSTR) CHoge::Hoge
>という感じにするとHogeの文字列が戻るとして
ここが怪しい。ソース晒せ。でないと誰にも分からん。
0151デフォルトの名無しさん
NGNGこちらにきました。その時の質問をコピペしますが、許してください。
誰か簡単なサンプルソースを作ってもらえないでしょうか?
・ある物の状態を監視
・その状態を表示
といった単純な事がやりたいのですが、その状態を表すクラスを↓のように定義して
class Status{
public:
Status() : dat(0){};
virtual ~Status(){};
void set(int i) { dat=i; }
int is() { return(dat); }
private:
int dat;
};
メイン関数では↓のように作りました。
Status st;
// 監視側
if(ある物の状態==true){
st.set(1);
}
// 表示側
if(st.is()==1){
表示;
}
が、これだと表示側からもdat.set()が呼べてしまうので危険です。
現状ではfriendを使ってやってるのすが、すっきりしません。
こういう場合、普通は(オブジェクト指向的に?)どのように作るものなのでしょうか?
0152デフォルトの名無しさん
NGNGそいつにStatusのポインタを持たせる
以上
0153デフォルトの名無しさん
NGNG「あまり相手にされなかった」って、お前、レスもらっといて無視してんじゃねぇか。
0154デフォルトの名無しさん
NGNGその後何も音沙汰なかったので。加えて周りの方の話題が私にとって
ちょっと高度なので場違いなのかと思いまして・・・
0155デフォルトの名無しさん
NGNG> 現状ではfriendを使ってやってる
とりあえずこいつをコンパイルできる状態で晒せ。
あと、どうすればお前が「すっきり」するのかも明記しる。
0156デフォルトの名無しさん
NGNGソース書いてと言われて素直に応じる奴はここにはいないと思う。
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNG今手元にコンパイルできる環境がないのでソースは晒せません。
申し訳ないです。要はset()関数を呼ぶクラスに対してfriend宣言してるだけです。
>あと、どうすればお前が「すっきり」するのかも明記しる。
いくつかのクラスで共有したいデータがあって、そのデータを管理するクラスを作りました。
そのクラスを使って外にデータを公開したいのですが
単純にis()とかset()とか作るだけでは、ライトを許可したくない
クラスからもライトされる可能性があるので、それを禁止するような作りにしたいのです。
friendを使いたくないのは、ライトするクラスが変わったりすると修正が必要だし
公開したくないメンバまで公開してしまうのに抵抗があり、すっきりしないのです。
0159デフォルトの名無しさん
NGNGC++ならconstで万事解決するんじゃね?
0160デフォルトの名無しさん
NGNGStatus::set()をこんなふうにしてみては?
void Status::set(const ACertainClass& ある物, int i)
{
if (ある物.状態()) // == true は嫌 (CのFAQ参照)
dat = i;
}
0161デフォルトの名無しさん
NGNGなんかイマイチやりたいことがわからんが、
>いくつかのクラスで共有したいデータがあ
るんだったらデータを管理するクラス一個作ってほか「いくつかのクラス」とやらは継承したら?
そゆことじゃなくて?
>>159 もいいと思う
・・・っていうかやっぱ漠然としすぎてて良く分からん
もうちょっとでいいから具体的なソース晒せ
0162160
NGNG>>160だとsetterを呼ぶのは勝手だけど「ある物の状態」がtrueじゃないと
Status::datの値は変更できなくなるでしょ?
メイン関数は
Status st;
// 監視側
st.set(ある物, 1); // set_if()って名前にした方が良かったかな
// 表示側
if (st.is() == 1) {
表示;
}
ってなります。
0163デフォルトの名無しさん
NGNGstruct test{
char name[100];
};
int main(){
struct test i;
char buf[]={'a','b','c'};
i.name=buf;
}
test.c: 関数 `main' 内:
test.c:8: error: incompatible types in 代入
とエラーが出るのですが8行目のどこがいけないんでしょうか?
C言語です。
0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNG多分
strcpy(i.name,buf);
でしょ!?
0166デフォルトの名無しさん
NGNGchar buf[] = "abc";
ならそれでもいいんだけどな。
0167165
NGNG>ならそれでもいいんだけどな。
へ?何が違うの?:(*゚Д゚)
0168デフォルトの名無しさん
NGNG0169デフォルトの名無しさん
NGNG本当だ!こりゃ大変だ!!
0170デフォルトの名無しさん
NGNGネタだな。
0171デフォルトの名無しさん
NGNG親クラスを変更したくない時、仮想関数を使うとき、MFCで作るとき、くらいしか意味のある使い方が思い付かないんですが…,
わざわざ継承しなくても、同じクラスに機能を追加すればいいんじゃないかと思うんですが、どうなんでしょう?
0172デフォルトの名無しさん
NGNG君はクラスの多様性(ポリモフィズム)を知らないの?
クラスAを継承したクラスABは、クラスAとしても使用できる。
ゲームで利用するなら
スプライトを扱うクラスSPRがあり、それを継承した2Dキャラクラを扱うクラスCHARACTER2Dと
ポリゴンで構成された3Dキャラクタを扱うクラスCHARACTER3Dの二つがあるとする。
親クラスであるクラスSPRにはDrawとMove等のメソッドが用意されている。
もうお分かりだが、継承した二つのクラスをSPRクラスとして使用すれば2Dキャラクタと3Dキャラクタの
違いを吸収してくれるため、双方ともただのスプライトとして扱える。
0173初心者
NGNG0174初心者
NGNG0175デフォルトの名無しさん
NGNGできるけど多分君は危険な事やろうとしてるから教えない。
0176デフォルトの名無しさん
NGNG二次元配列のメモリの確保のしかたを教えて欲しいんですが…
0178初心者
NGNG初心者なので、なぜ危険なのかもわかりません。
よろしくお願いします。
0179デフォルトの名無しさん
NGNGなぜconstが付いてるかよーく考えろ
0180デフォルトの名無しさん
NGNGconst char*x="ABC";
char*y=x;
これだとコンパイルエラー(当たり前だが)
でも、
const char*x="ABC";
char*y=(char*)x;//キャストね。
これだとコンパイルエラーにならないし実行も出来る。
だけどむしろ、んなことする意味がない。
だってconstで宣言したってことは最初から
変 更 し た く な い か ら だ ろ !
0181デフォルトの名無しさん
NGNG175と179はいいこと言ってる。
0182デフォルトの名無しさん
NGNGconstはずしちゃうと警告とかされずにいぢれちゃうだろ?
0183初心者
NGNG0184182
NGNG0185デフォルトの名無しさん
NGNGだから何?
0186初心者
NGNG0187デフォルトの名無しさん
NGNG0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNGオモロイ(W
0190デフォルトの名無しさん
NGNG代入したくなったら、それは間違っている。
なぜなら、代入されたくないからconstなのだ。
そう肝に銘じとけ>初心者
0191初心者
NGNG0192デフォルトの名無しさん
NGNGいったいどういうシチュエーションでそんなことをしたくなったのかが知りたい。
気まぐれでage
0193デフォルトの名無しさん
NGNGCString⇒stringはできるのですが・・。
0194デフォルトの名無しさん
NGNGstd::string ⇒ char* なら
std::string::c_str()
0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNGボーランドCとビジュアルCでは構文が違いますか?
読んだほうがいい本も教えてください。
0197デフォルトの名無しさん
NGNGコメントの書き方
VC ---> /*コメント*/ あるいは //コメント
他 ---> /*コメント*/ のみ
0198デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNGソースコードを修正中、デバッグしようとしたら
'C:\WINDOWS\SYSTEM\KERNEL32.DLL' をロードしました、合致するシンボル情報は見つかりませんでした。
例外処理 (初回) は bt_hoge.exe にあります: 0xC0000005: Access Violation。
というエラーが出ました。
ブレークポイントを挿入すると、どうやらただのforループで止まってしまっているの
ですが、何か思いつく原因はありますでしょうか。
0200デフォルトの名無しさん
NGNGbcc でも gcc でも
//コメント
書いてますが何か?
0201デフォルトの名無しさん
NGNGソースさらしてーーーーー!!!!
0202デフォルトの名無しさん
NGNG// C++とC99のコメント
なわけだが。
0203デフォルトの名無しさん
NGNGCしか使えない状況に陥ったこと無かったから知らなかった。
ん?ってかC99っていったい何すか?
0204デフォルトの名無しさん
NGNG金がないならフリー版の前者。
金があるなら後者。
おいらは金がないのでVC++はもってない&よくわからん。
が、知人はVC++でプログラム作ってると謎のエラーが多いと言っていた。
いやコンパイルエラーとかランタイムエラーじゃなくて、
VC++自体が固まっちゃうとか・・・。
どうもM$の製品は時に我われの期待を裏切る挙動をするらしい。
0205デフォルトの名無しさん
NGNG文法は基本的に同じ。
固有の拡張もあるが、これからはじめる奴が気にする必要は無いだろう。
0206デフォルトの名無しさん
NGNGttp://www.google.co.jp/search?q=C99&ie=UTF-8&hl=ja&lr=
0207デフォルトの名無しさん
NGNGサイト検索してもその意味がわからず・・・・。。
「VineLinux2.6r4(i386)の環境」ってかいてあったんですが、
これはCPUがインテル386ということなのでしょうか・・・
それとも全く関係ないのでしょうか・・・とつぜん申し訳ありません、
VineLinuxというの自体がわからず、とりあえずプログラミング関係の
サイトだったのでここにこさせていただきました。。
0208デフォルトの名無しさん
NGNGVineLinuxというのはOS
スレ違い
0209デフォルトの名無しさん
NGNG0210デフォルトの名無しさん
NGNG嫌です。
こっちに逝く
ぼるじょあがC/C++の宿題を片づけますYO! 24代目
ttp://pc5.2ch.net/test/read.cgi/tech/1086612317/l50
0211デフォルトの名無しさん
NGNG普通はインテル386「以降」って言うよな
>>207
とりあえずLinux板がある
0212sage
NGNG0213デフォルトの名無しさん
NGNGウィンドウのwidth/heightとフォームビューリソースのwidth/heightが合いません。
どうやって合わせたら良いんでしょうか。
0214デフォルトの名無しさん
NGNGフォームビューをCreateするときnIDに AFX_IDW_PANE_FIRST を
指定するとMFCが勝手にリサイズ処理をしてくれまつ
0215151
NGNG・キーボードからの入力を監視するクラス
・入力されたデータを管理/保持するクラス(インスタンスは1つとする)
・そのデータを表示するクラス
みたいな物を作りたいとします。
問題はデータを管理するクラスの設計で
setterをコールできるクラスを制限したいのですが・・・
setするクラスを別に定義するのが普通なのかなぁ。
↓晒せと言われたので一応(擬似)ソースです。長くてすんません。
#include <iostream>
using namespace std;
//----- dat.h -----
class Dat
{
public:
char is(){return(key);}
void set(char c){key=c;}
private:
char key;
};
extern Dat DAT;
0216151
NGNG#include "dat.h"
class Watch
{
public:
void exec()
{
char key=キーボードからの入力をみる();
if(key){
DAT.set(key);
}
}
};
class Disp
{
public:
void exec()
{
if(DAT.is()){
cout << DAT.is() << endl;
}
}
};
0217151
NGNGmain()
{
Watch *w = new Watch;
Disp *d = new Disp;
while(1)
{
w->exec();
d->exec();
}
delete w;
delete d;
}
0218デフォルトの名無しさん
NGNG> extern Dat DAT;
これが元凶。こんなのあったらアクセス制御のしようが無い。
0219デフォルトの名無しさん
NGNG>218の言うとおり。
そして>160で解決でしょう。
あともし継承つかうなら、
1. class Dat の中の set() を virtual にする
2. class Dat の中の key を static にする
3. class Watch と class Disp は Dat を継承
4. class Watch の中で set をオーバーロード
でどうでしょう?
要は Disp で set() を呼び出せないようにしたいと解釈したんだけど。
0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNGサンクス
んでもスンマソ、現状MFC使わずにやってるんで、このまま使わずにやってみたいんですわ。
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNGポリモフィズム・・・。ポリモーフィズムって覚えてたよボク・・・。
なんかコンピュータ用語って「−」をryすけど、これってどうゆうこと?
>219のオーバーロードなんてオバロドじゃん。
あ、英語のスペルで書いたときrのせいで伸びちゃうやつだけryすの?
そういやコンピュータはコンピュタじゃないな。
とふと思ってぐぐってみたよ。
ポリモフィズム の検索結果 約 856 件中 1 - 10 件目 (0.20 秒)
ポリモーフィズム の検索結果 約 1,930 件中 1 - 10 件目 (0.24 秒)
ポリモーフィズムのが多いね・・・。
この辺の事情に詳しい人いますかぁ?
0225デフォルトの名無しさん
NGNGあとはこの辺
http://www2u.biglobe.ne.jp/~standard/faq/faq505.htm
0226デフォルトの名無しさん
NGNG勉強さすていただきましたー!!
0227デフォルトの名無しさん
NGNGclass Base{
friend class Hoge;
protected:
virtual void Draw(引数);
};
class A:public Base{
friend class Hoge;
private:
void Draw(引数);
あといくつかの関数と変数
};
class Hoge{
public:
A a[64];
Base *base[256];
};
みたいなかんじで書いて
Hogeのなかで
base[0]=&a[0];
と、したときに
base[0]のvfptrがNULLになってしまい
Drawを呼べなくなってしまいます
解決法をご教授願います
0228デフォルトの名無しさん
NGNGHogeのなかで
base[0]->Draw(引数);
でちゃんと呼べたけど…(gcc 3.3.1 cygwin)
他のところで間違ってるんじゃない?
0229デフォルトの名無しさん
NGNG実行する時のカレントディレクトリは実行ファイルが置かれているディレクトリではないです。
簡単なのかも知れませんが本当に困っているのでよろしくお願いします。
0230デフォルトの名無しさん
NGNGpopen("type -p argv[0]","r");
こんなアプローチでどうだろう?
0231デフォルトの名無しさん
NGNGシンボリックリンクを通して実行した場合はどうするの?
やっぱりシンボリックリンクが示す本体の場所が知りたいの?
0232デフォルトの名無しさん
NGNG今のところシンボリックリンクから呼び出されることはない予定です。
0234デフォルトの名無しさん
NGNGWindowsで229とおんなじことしたい場合も同様にできるんですか?
それともAPIがあるんでしょうか?
0235デフォルトの名無しさん
NGNG0236227
NGNG他のところも一応調べてみたのですが
どうも間違ってるようには感じられませんでした。
あいまいな聞き方かもしれませんが
vfptrがNULLになってしまう、考えられる要因を
教えていただけませんでしょうか。
後、遅れましたが環境はVC++6.0です。
0237デフォルトの名無しさん
NGNGそれで起こらなかったら確実に元ソースが悪い。デバッグで追っていくか差異を調べる。
もし起こったらおそらくどっちのソースも悪い。そのソースをここに貼って指摘を待つ。
0238デフォルトの名無しさん
NGNG0239227
NGNGクラスの初期化の方法に問題があったようです。
0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNGおそらくあなたが望んでいるのは c_str()でしょう。
もちろん入門書の類は持ってますよね。
あとは索引からc_strのページを見つけて、読んでください。
0242デフォルトの名無しさん
NGNGディレクトリの存在を確認する方法ってありますか?
OSはXPです。system関数などでDOSのコマンド使っても
いいのですが。batファイルなんかだとif exist ....
ってのがありますが、これはsystem関数からは使えない
ようです。C言語の標準にも確認する関数はないですよねぇ?
できるんでしょうか。
0243デフォルトの名無しさん
NGNG0244242
NGNG方法もあると思いますが、その場合、存在しないと
エラーでシステムからメッセージが表示されちゃうん
ですよね・・・。エラーださないで、チェックだけを
する方法ってないもんですかねぇ。
0245デフォルトの名無しさん
NGNGオプティマイザの付いているVC++Professionalだとちゃんと抑制されるんでしょうか?
その他、あまりにバカなコード生成に泣きたい思いです。
0246デフォルトの名無しさん
NGNGタダで使えるVisual C++ $2
http://pc5.2ch.net/test/read.cgi/tech/1086287039/l50
最適化付Pro版が手に入る
0247デフォルトの名無しさん
NGNG漏れなら、標準にこだわらず素直にWin32 API使う。そもそもchdirも
nkdirも標準じゃないんだし。
>>245
VS2003だと、debugだと呼ばれて、releaseはきれいになくなったよ。
0248デフォルトの名無しさん
NGNGGetFileAttributesはどう?
ファイル名を指定して失敗したら-1を返す。ただし符号なしのDWORD型w
#include <windows.h>
#include <stdio.h>
int main(int argc, char **argv)
{
if (GetFileAttributes(argv[1]) == (DWORD)-1)
printf("ファイルはない");
else
printf("ファイルはある");
return 0;
}
0249242
NGNGやはりファイルシステムは処理系依存だから標準では
どうにもならんですか。素直にAPIとか使うしかないですね。
ちなみに
system("mkdir");
system("cls");
で、もしディレクトリ既存のエラーがでても一瞬出てすぐ消せますね(w。
余談ですが、C++のBoostにfilesystemってのがあるようですが、あれだと
チェックができてなおかつ移植性があったりするんですかね・・・。
0250デフォルトの名無しさん
NGNG見たことないな
0251デフォルトの名無しさん
NGNGバッチコマンド使いたかったらcmd.exe経由で動かせばsystem()からでも使えなくはないけど…
APIで事足りるならそのほうがいいと思います。
つーか、system()使うとそれだけでDOS窓開くしねぇ。
0252デフォルトの名無しさん
NGNGエラー出力のリダイレクト
http://homepage2.nifty.com/winfaq/c/hints.html#548
system("mkdir 〜 2> NUL")
でも俺のWin98では無理だった……
他には一時的に文字の色を背景色と同じ色に変更してmkdirを使うとかw
0253デフォルトの名無しさん
NGNG* _rmdir 関数を使用して、ディレクトリを削除します。*/
#include <direct.h>
#include <stdlib.h>
#include <stdio.h>
void main( void )
{
if( _mkdir( "\\testtmp" ) == 0 )
{
printf( "ディレクトリ '\\testtmp' が正常に作成されました。\n" );
system( "dir \\testtmp" );
if( _rmdir( "\\testtmp" ) == 0 )
printf( "ディレクトリ '\\testtmp' が正常に削除されました。\n" );
else
printf( "ディレクトリ '\\testtmp' が削除できません。\n" );
}
else
printf( "ディレクトリ '\\testtmp' が作成できません。\n" );
}
0254デフォルトの名無しさん
NGNGwindowsのWaitForSingleObject
みたいに休止できるできるやつってありますか?
pthread_cond_waitとかはなんか違うっぽいし・・・
0255デフォルトの名無しさん
NGNG0256151
NGNG>>218
確かにそうですが、まぁ例と言うことで。
>>219
>4. class Watch の中で set をオーバーロード
は 「class Dispの中で」での間違いでしょうか?
Watchの中でオーバーライドするとDAT.set()が呼べないと思うのですが・・・
>要は Disp で set() を呼び出せないようにしたいと解釈したんだけど
その通りです。
0257229
NGNGhttp://x68000.startshop.co.jp/~68user/unix/pickup?realpath
という所が見つかって無事に目的を達成できました。
皆さんどうもありがとうございました。
0258デフォルトの名無しさん
NGNGhttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/realpath.3.html
↑ここには、「この関数は決して使わないこと。」なんて書かれてるな。
0259デフォルトの名無しさん
NGNGWindowsなら、GetModuleFileName(NULL,... でいける。
0260234
NGNGありがとうございます!
実は密かにけっこう前から謎だったんで助かりました!!
0261219
NGNG>Watchの中でオーバーライドするとDAT.set()が呼べないと思うのですが・・・
えーと、いちおう Dat DAT; ていう変数自体使わない方向性で継承の手順書いて見たんだなぁ。
ちょっと言葉がたりなかったかな?(反省)
set 呼ぶときは Watch::exec() のなかで
>DAT.set(key);
の部分をただ単に
set(key);
って書く感じ。(オーバーライドしてあれば書けるでしょ?)
そうすると、set は Watch の中で「敢えて」オーバーライドしない限り使えない。
→つまり Disp の中では使えない。
っていうのが実現されるかなぁと。
もし Watch クラスの方は逆に Dat の key を読めないようにしたいなら、継承するとき private にするなり、Dat::is() を virtual にして Disp でオーバーライドするなり微調整してみては?
だいたい継承使わなくても>160+>162の方法じゃ納得いかないの?
結局アクセス制御の点では似たようなことになると思うんだけど。
0262218
NGNG> 確かにそうですが、まぁ例と言うことで。
突っ込まれて「例と言うことで」で済むようなソース晒しても意味無いだろうが。
何で「ソース晒せ」と言われたかわかってんの?
0263160 and 162
NGNG//----- dat.h -----
class Dat {
public:
char is() const { return key; }
void set(char c) { if (c) key = c; }
private:
char key;
};
//----- main.cc -----
#include "dat.h"
class Watch {
public:
void exec()
{
char key = キーボードからの入力をみる();
dat_.set(key);
}
private:
Dat dat_;
};
ちなみに>>215-217だと>>151でいう「ある物の状態」の「ある物」と
Dat::set()の引数が同じだけど本物でもそうなの?
0264263
NGNG//----- main.cc -----
#include "dat.h"
class Watch {
public:
void exec(Dat& dat)
{
char key = キーボードからの入力をみる();
dat.set(key);
}
};
class Disp {
public:
void exec(const Dat& dat) const { if (dat.is()) std::cout << dat.is() << std::endl; }
};
int main() {
Watch w;
Disp d;
Dat dat;
while(1) {
w.exec(dat);
d.exec(dat);
}
return 0;
}
0265デフォルトの名無しさん
NGNGswitch文のラベルにマクロを使うと、
「error C2143: 構文エラー : ':' が ';' の前にありません。」
となりコンパイルが通りません。
例)
#define UM_TEST (WM_USER+1);
(中略)
switch(message)
{
case WM_COMMAND:
break;
case WM_CLOSE:
case UM_TEST: ←この行でエラー
default:
return ....
}
なお、ラベルのUM_TESTをWM_USER+1と記述すると正しく動きます。
0266デフォルトの名無しさん
NGNGネタ?
> #define UM_TEST (WM_USER+1);
↑の末尾のセミコロンを取り除け。
0267デフォルトの名無しさん
NGNGほ、ほんとだ・・・
寝ぼけてました。
すみません。
出直してきます。
かなり恥ずかしいですね・・・
0268デフォルトの名無しさん
NGNG0269151
NGNGclass Watch : public Dat
class Disp : public Dat
と継承するという事ですよね?
>そうすると、set は Watch の中で「敢えて」オーバーライドしない限り使えない。
>→つまり Disp の中では使えない。
ここが意味が分からないのですが・・・
継承してるならオーバーライド「しない」状態でDat::set()が使えると思うのですが。
>Dat::is() を virtual にして Disp でオーバーライドする
同様に↑もよくわかりません。
私が何か勘違いしてるんでしょうか。
>>262
実際はDATにシングルトンパターンを使っているので
それ程大きな問題にはならないと思っています。
(#define DAT Dat::instance()とかしてる)
>>264
コンパイルできる環境がないので試せないのですが
constを付けるとDisp::exec()でdat.set()は呼べなくなるという事ですか?
0270デフォルトの名無しさん
NGNG>class Watch : public Dat
>class Disp : public Dat
>と継承するという事ですよね?
そうそう。
>継承してるならオーバーライド「しない」状態でDat::set()が使えると思うのですが。
また説明足らなかった・・・。混乱さしてスマソ。
virtual にして =0 つけないと意味無かったね。
純粋仮想関数っていうんだっけ?オーバーライドしないと使えない奴。
まあ継承ってのはちょっとした思い付きで言っただけだから、
>すっきり
は組めないかもね。
>>>264
>コンパイルできる環境がないので試せないのですが
>constを付けるとDisp::exec()でdat.set()は呼べなくなるという事ですか?
そうだよ。まー>264はキレイな回答だとおもうしこれで
>すっきり
したらいいんじゃない?ダメなら継承も考えてみるけど。
0271270
NGNGそうすると Disp::set() も書かなきゃいけないから、定義のしかたで書き換えできないようには出来るけどかなり微妙だな・・・。
こりゃすっきりしないかもね。すっきりするにはコーディングの変更が多そうだ。やっぱ264にしといたら?
0272デフォルトの名無しさん
NGNG>あ、今思ったけど純粋仮想関数ってオーバーライドしなきゃいけないんだったっけ。
をい、んなこと当たり前じゃない毛。おまえレベル低すぎ。
0273151
NGNG>そうだよ。まー>264はキレイな回答だとおもうしこれで
これが本当ならかなりビックリです。
コンパイラがメンバ関数の中身まで見てるとは思えないのですが・・・
明日試してみます。
>あ、今思ったけど純粋仮想関数ってオーバーライドしなきゃいけないんだったっけ。
了解です。そもそもDatをWatchに継承するのはfriendを使うより抵抗があります・・・
0274デフォルトの名無しさん
NGNGコンパイラはメンバ関数の宣言を見ている。
char is() const ←これ
void set(char c) ←こっちは const がない
そうすると Disp::exec の引数 const Dat& のインスタンスは is を呼べても set を呼べない。
0275デフォルトの名無しさん
NGNG> 実際はDATにシングルトンパターンを使っているので
アクセス許可の観点からは、externと同レベルだと思うんだけど。
0276264
NGNG>>そうだよ。まー>264はキレイな回答だとおもうしこれで
>これが本当ならかなりビックリです。
もしかしてネタで書いたコードだと思われてたのか?
そうか、だからスルーされ続けてたのか。
0277151
NGNGそれはその通りですね。
>>274
なるほど!謎が解けました。
実際やってみましたが、set()を呼ぶとエラーになりました。
>>276
無視してたわけじゃなくて、正直理解できなかったんです。申し訳ない。
ただ実際にはexec()の引数にはできないので
もうちょっと工夫してみます。
ありがとうございました。
0278デフォルトの名無しさん
NGNG-20%7の出力結果を1にしたいのですが
どうやったらいいのでしょうか?
#include <stdio.h>
int main(void)
{
int t;
unsigned int s;
t = -20%7;
s = -20%7;
printf(" signed unsigned\n");
printf("-20%%7=%d -20%%7=%d\n",t ,s);
t = 20%7;
s = 20%7;
printf(" 20%%7=%d 20%%7=%d\n",t ,s);
return 0;
}
0279デフォルトの名無しさん
NGNG0280デフォルトの名無しさん
NGNG???
なんのこっちゃ?
0281デフォルトの名無しさん
NGNG20 ÷ 7 = 2 あまり 6
0282デフォルトの名無しさん
NGNG-20/7=-2 あまり 1だけど?
マイナス20なんですけど・・・
0283デフォルトの名無しさん
NGNG0284デフォルトの名無しさん
NGNGだから困ってんです。
Cでもあまりは正で出力されるとばかり思ってたから・・・
0285デフォルトの名無しさん
NGNG-20 = 7*(-3) + 1
だから -3 余り 1 じゃね?
余りは常に正と言うんなら(t+7)%7で求まると思うが。
0286デフォルトの名無しさん
NGNG-20=7*-3 + 1だ
-2じゃ、なかたよ
いちいちif文書くのめんどくさっておもったんだ
cの規格に何とかする方法があればそっち使いたいなーって
0287デフォルトの名無しさん
NGNGttp://seclan.dll.jp/c99d/c99d05.htm#dt19990607
俺の環境では、非C99の場合 -20 % 7 == 6
0288デフォルトの名無しさん
NGNGお前らちゃんとCの勉強してから文句言え
0289デフォルトの名無しさん
NGNG0290デフォルトの名無しさん
NGNG<
∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨
|:\ |:\
|::: \ |:::: \
|:::: ヽ |::::::: │
|::::::: 丶――⌒゙゙^ ̄ ̄ │
/::::::: _,,,,__,_, U , , ,,,丶
/:::::::::::: z-/^ 丶 // ̄ ̄\|
/:::::::::::::::::: ..彡│ ● |l ‖ ● |
/:::::::::::::::::::: 人i‖ 》 | |
{:::::::::::\\J .\_,,,,,u= ⌒ \_,,,,,__/\
|::::::::::::::::::) ( ⌒ |
|::::::::::::::::/ /∩ // ̄ ̄\,,,,,____,,,\. |
{::::::::::::::: | |\/┘┘┘┘┘┘|/| .│ .|
|::::::::::::::: |lllllllllllllllllllllllllllllllllllllllllllll| | |
|::::::::::::::: | ⌒\⌒\llllllllllllllllllll| | |
{::::::::::::::: |. \ |lllllllllll| | |
|::::::::::::::: | | ヽ |lllllllll| | |
\::::::::::::::: │ | │ |lllllll| | |
\:::::::::::::: \ |∧ │ |lllllll| | |
/::::::::::::::: \ \\ \∧. |
/:::::::::::::: :::\ \\┐┐┐┐┐ \ \
/::::::::::::::: ::::::::::::\ ゙゙^^¨゙゙^^¨^゙゙¨¨゙゙¨^゙) \
0291デフォルトの名無しさん
NGNG0292デフォルトの名無しさん
NGNGウィンドウ全体にかかるフォームAと
その一部がその他のフォームでも使用されるフォームB.
両方ともWinMainでCreateDialogすると、CreateDialogの順番によって動作が変わり、
Aが表示されてBが見えずAB両方にアクセスできる場合と、
ABともに表示されてBにアクセスできない場合とに分かれます。
(BはAやその他で使うカラーテーブルのフォームで、Bの操作でAの動作が変わるように考えてます)
自分としては、AにBがそのまま乗るような動作を期待してるんですが、どうもうまくいきません。
この場合、どうしたらいいんでしょうか。
0293デフォルトの名無しさん
NGNGスレ違い。
WinAPIスレあたりで聞いてみたら。
0294デフォルトの名無しさん
NGNGシグナルハンドラの中から例外を出してもうまくいきませんでした。。。
0295デフォルトの名無しさん
NGNGcc test.c
gcc test.c
とするのではなにが違うのでしょうか?
0297デフォルトの名無しさん
NGNG0298デフォルトの名無しさん
NGNGprotected/private継承の使い分けを教えてください
0299デフォルトの名無しさん
NGNG既存のクラスを実装に利用したい時に使える。
class deck : private deque<card> {...}; // デッキ(トランプの)を実装するのにdequeを利用する。
これとほぼ同じ事が、privateメンバ変数としてそのクラスの
員ん洲箪笥をを持つ事によって実現できるから、あまり使われない。
protected継承は基本的にprivate継承と同じ使い方をするが、この場合deckからさらにクラスを派生させたくて、
そこからもdequeを利用できるようにしたい時に使える。
これはdeckのprotectedメンバ変数としてdequeを持つのに似ている。
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNGCMan //沢山のインスタンスを作れるクラス、かつ全員が同じCGodにアクセスできる
CMan a;
とやるだけでどこかにCGodが1人作られる
その後はCManが何人作られようがCGodは一人
CGodはCManを介さないとアクセスできない
CManが一人も居なくなるとCGodは勝手に消滅する
グローバルオブジェクトを使わずに、こんなことをクラスで構築可能ですか?
0302デフォルトの名無しさん
NGNGpublic:
CMan() {
if(!_godref) {
_pgod = new CGod();
}
_godref++;
}
~CMan() {
_godref--;
if(!_godref) {
delete _pgod;
}
}
private:
CGod* _pgod;
static int _godref;
};
int CMan::_godref = 0;
0303デフォルトの名無しさん
NGNG_pgod は static じゃなくていいの?
だってさー、
int main() {
CMan * saishonohito = new CMan;
CMan * tsuginohito = new CMan;
delete saishonohito;
delete tsuginohito;
return 0;
}
のとき tsuginohito のデストラクタは何を delete するんだ?
っていうか>>301の言う CGod はどうやって定義するつもり?
>1つしかインスタンスを作れないクラス
っての無茶じゃね?
0304デフォルトの名無しさん
NGNG0305デフォルトの名無しさん
NGNGomaemona-
0306デフォルトの名無しさん
NGNG手っ取り早くCManの中にstaticでCGod詰め込んどけ。
0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNG0309デフォルトの名無しさん
NGNG>CManが一人も居なくなるとCGodは勝手に消滅する
0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNGでも言えてるな・・・。
0313デフォルトの名無しさん
NGNGでたらめな値が出てくるんだけれど、なぜだろう?
0314デフォルトの名無しさん
NGNG0315デフォルトの名無しさん
NGNG%x,%X,%o、それにlやhをつけたものは符号無し整数を相手にする。要するに%uの16,8進数版。
0316294
NGNG0317デフォルトの名無しさん
NGNG負の値として出力することはできない?
0318デフォルトの名無しさん
NGNG「2の補数」で検索するといいかもしれない。
0319デフォルトの名無しさん
NGNGとりあえず、文字列の先頭から1文字ずつ","か"\n"をチェックして文字数分だけループさせるソースを書いたのですが、
もっと簡単な方法は無いでしょうか。
環境はVC++で、MFCは使っていません。
0320デフォルトの名無しさん
NGNGstrtok()
0321デフォルトの名無しさん
NGNGboost::tokenizer使えばあっちゅーまだよ?
インストールがめんどくさいだけだが
0322デフォルトの名無しさん
NGNGLinux+Intel compilerとWinXP+VC6でコンパイルしたオブジェクトファイルを組み合わせてリンクすることは可能でしょうか?
0323デフォルトの名無しさん
NGNGそんなのが存在するか知らんが。
0324デフォルトの名無しさん
NGNGコンストラクタで、文字列を解析するつもりです。
lpszBuffには、文字列のアドレスを受け渡してるつもりです。
class DbCardBase{
public:
DbCardBase(LPSTR lpszBuff);
};
DbCardBase::DbCardBase(LPSTR lpszBuff){
char *szBuff;
szBuff = lpszBuff;
};
0325デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNGポインタはなんとなく理解出来始めたのですが
文字列の扱いに未だ疑問があります。
文字列("abcde")はchar*の変数と同じような働きをしている?というような解説をどこかで見たので、
自分でも色々と試してみました。
cout << *("abcde") << endl;
この実行結果は a になりました(理解しました。)
cout << "abcde"[3] << endl;
この実行結果は d になりました(理解しました。)
cout << &("abcde") << endl;
私の理解ではこれで文字列"abcde"を指すポインタのアドレスが出ると思ったのですが
文字列がそのまま出てしまいます。
私の理解の仕方がおかしいのでしょうか?
0327デフォルトの名無しさん
NGNG出ないんですか _| ̄|○
となるとエラー箇所が他なのですね。研究します。
0328デフォルトの名無しさん
NGNG0329324
NGNG関数の引数として受け渡しするとき、受け側の型は何にすればよいのでしょうか?
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNGポインタが理解できているなら文字列も理解できるはず。
逆をいうと・・・(ry
0332デフォルトの名無しさん
NGNGうちの環境はアドレス出すなぁ。
0333デフォルトの名無しさん
NGNG失礼しました。
私はVC++6.0を使っているのですが、
お手数でなければ貴方の環境を教えて頂けないでしょうか?
0334デフォルトの名無しさん
NGNG> _pgod は static じゃなくていいの?
ほんとだ。すたてぃっくじゃなきゃだめです。
間違い。
0335デフォルトの名無しさん
NGNG俺も初心者なんだけどprintf使ってやってたらアドレス出た。つーかポインタに&ってどうなの?エロイ人
0336デフォルトの名無しさん
NGNGこんなのどうよ?
#include <iostream>
void f(char *buf) {
std::cout << buf << " f-1\n";
}
void f(const char (*buf)[5]) {
std::cout << *buf << " f-2\n";
}
int main() {
f("abcd");
f(&"abcd");
return 0;
}
0337デフォルトの名無しさん
NGNGたとえば
class test{
kouzoutai a;
}
int test::pointer{
return(&kouzoutai);
}
int main{
kouzoutai *a;
test test1;
a = test1.pointer;
}
はできますでしょうか?
0338デフォルトの名無しさん
NGNGクラスと同じ
0339337
NGNGありがとうございます。クラスが解放されるまでは参照可能ということでしょうか?
あと、構造体のアドレスの渡し方って、>337で大丈夫でしょうか??
0340デフォルトの名無しさん
NGNGコンパイルできないだろ?
0341デフォルトの名無しさん
NGNGで宣言して
a++;
ってしたらアドレスが3つすすんだんだけど常識?
0342デフォルトの名無しさん
NGNGそもそも、クラスメンバの非constな参照/ポインタを返すのはやめとけ。
激しく推奨されない。
0343デフォルトの名無しさん
NGNG理由は?
0344デフォルトの名無しさん
NGNG0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNGどうやって宣言したらいいのですか?
これではおこられます・・・
先行宣言みたいなことできますか?
typedef struct
{
int n;
HogeHoge* pHogeHoge;
} Hoge;
typedef struct
{
int n;
Hoge Hoge;
} HogeHoge;
0347デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNGデスクトップの向かって右の時計みたいに。
0349デフォルトの名無しさん
NGNGtypedef struct
{
int n;
struct tag_HogeHoge* pHogeHoge;
} Hoge;
typedef struct tag_HogeHoge
{
int n;
Hoge Hoge;
} HogeHoge;
0350デフォルトの名無しさん
NGNGバックスペースの'\b'を出力するか、
Win32コンソールプログラムならSetConsoleCursorPosition
本当のDOSプログラムならANSIエスケープシーケンスで位置を動すとか
0351デフォルトの名無しさん
NGNG改行の代わりに'\r'を出力してみれ。
0352デフォルトの名無しさん
NGNGchar abc!=(クラス名 aaa) const
となっているのは、どういう意味ですか?。
abcになにか入れる?。constは定数にするとの意味ですよね。
0353デフォルトの名無しさん
NGNG0354デフォルトの名無しさん
NGNGabcには'operator'が入るとしたら、演算子!=の意味を規定する関数。
class test{
int _i;
public:
test(int i) : _i(i) {}
char operator!=(const test &t){return _i != t._i ? 't': 'f';}
};
test a(0), b(1), c(0);
std::cout << a != b << a != c << b != c << '\n'; // tftと表示される。
0355デフォルトの名無しさん
NGNGポインタでなければエラーになるみたいなんですが
実態を持つにはどうすればいいのですか?
これだと怒られちゃいます
typedef struct
{
int n;
struct tag_HogeHoge HogeHoge;
} Hoge;
typedef struct tag_HogeHoge
{
int n;
Hoge Hoge;
} HogeHoge;
0356デフォルトの名無しさん
NGNGお前は無限個のint変数を使いたいのか?
0357デフォルトの名無しさん
NGNG>>351
おお!\rでできた!
どうありがとうございました。
0358デフォルトの名無しさん
NGNGbool operator!=(const test &t) const {return _i != t._i;}
の方がいいんじゃない?
0359デフォルトの名無しさん
NGNG0360デフォルトの名無しさん
NGNG0361デフォルトの名無しさん
NGNGそういえばそうでしたね。
0362デフォルトの名無しさん
NGNG不可能。
struct a; struct b;
struct a { int n; b _b; };
struct b { int n; a _a; };
これで a, bのサイズがいくつになるかよーく考えてみ。
0363へろへろ ◆Md2683u98.
NGNGC/C++のサンプルってありますでしょうか?
VBのサンプルは配布元にあるのですが、、、
よろしくお願いします。
0364デフォルトの名無しさん
NGNGHoge
├int n
└struct tag_HogeHoge HogeHoge;
├int n;
└Hoge(また?)
├int n
└struct tag_HogeHoge HogeHoge;(これもまた?)
├int n
└Hoge(あれ???)
├ …
って具合に実態を直接持つと永遠に続いて構造体の大きさを決定できないから無理。
0365デフォルトの名無しさん
NGNG0366デフォルトの名無しさん
NGNG0367デフォルトの名無しさん
NGNG当然,ANSI.SYSは組み込んであるんだろうな?
0368デフォルトの名無しさん
NGNG0369デフォルトの名無しさん
NGNG関数外へ移動。
0370デフォルトの名無しさん
NGNG移動というと、宣言してる行を動かせば良いのでしょうか??
0371デフォルトの名無しさん
NGNG他の関数からも使いたいなら関数外で宣言しろって事だ。
スコープを考えろ。
0372デフォルトの名無しさん
NGNG素数を求めていくプログラムを作ったのですが、
素数じゃない数も吐き出してしまいます。
何が悪いのかわからないので教えてください。
#include <stdio.h>
main()
{
int s,a,b,c;
printf("何個まで求めますか?\n");
scanf("%d",&c);
s=1;a=1;b=0;
while(1){
if(b==c){break;}
else if(s==a){printf("%d・",s);
++s;a=2;++b;}
else if(s%a==0){
++s;}
else if(s%a!=0){
++a;}}
printf("\n\n何か入力すると終了します");
scanf("%d",&c);
return 0;
}
0373デフォルトの名無しさん
NGNG++s;} → ++s; a=2;}
0375デフォルトの名無しさん
NGNGメソッドというのは正式な呼び方なんですか?
0376デフォルトの名無しさん
NGNG0377デフォルトの名無しさん
NGNGメソッドを使うのはVBあがりとかだろう。
0378デフォルトの名無しさん
NGNGフルパスのITEMIDLISTから、デスクトップのIShellFolderを使い
GetUIObjectOfをすればいいんですか?
それとも、やっぱりIDataObjectを実装しないとならないのでしょうか?
0379デフォルトの名無しさん
NGNG0380デフォルトの名無しさん
NGNGフルパスのITEMIDLISTから、デスクトップのIShellFolderを使い
GetUIObjectOfをすればいいんですか?
それとも、やっぱりIDataObjectを実装しないとならないのでしょうか?
0381378=379=380
NGNGホントごめんなさい。なんでこんなやっちゃうんだろorz
0382デフォルトの名無しさん
NGNGドンマイ
0383デフォルトの名無しさん
NGNGそこで、構造体・クラス・ポインタ・引数というような壁にぶつかりました。
本当に基礎的な部分は入門書のような本を読んだのですが、
ちょっと難しい使い方されてるようなものになるとさっぱりです。
クラスについてはさっぱりで、ポインタ・引数は無駄なくできているのか分かりません。
初心者でもある程度できるような、良い勉強法等合ったら教えてください。
0384デフォルトの名無しさん
NGNG訳分からん型いっぱい・・・
0385デフォルトの名無しさん
NGNG俺はポインタは絵に描いて覚えた
大き目の紙をメモリ領域だと想定して
線引いたりしてポインタの働きを視覚的に学んでみた
0386デフォルトの名無しさん
NGNG絵に描いて、ですか。
確かに、分からない時には良さそうですね、ありがとうございます。
しかし、構造体の中に構造体へのポインタをいれるような
リンクリスト(うろ覚え)のようなものになると、イメージも曖昧に…
0387デフォルトの名無しさん
NGNGその程度のことをイメージできないようじゃこの先つらいぞ。
0388デフォルトの名無しさん
NGNGデータ構造も絵に描いて覚えましたが何か?
ポインタは頭の中でだけで考えるとまとまりつかない(少なくとも俺は)んで
エクセルの図表使ったりもした
他人には見せられない幼稚な学習法だけどなー
俺の友達なんかは本屋でポインタの解説本、
フィーリングがあったのにぶつかるまで片っ端から立ち読みしてたけど
俺はかなりパーなんでこんなことしながら覚えたけど他の人はもっと上手くやってると思う。
0389デフォルトの名無しさん
NGNG>クラスについてはさっぱりで
Cにクラスはない
クラスがあるのはC++
0392デフォルトの名無しさん
NGNGメソッドはオブジェクト指向の用語だよ。
だからC++のメンバ関数のことを普通にメソッドという。
0393デフォルトの名無しさん
NGNGC++のスペックではメソッドなんて言い方は使っていないよ。
だからC++では「関数」が正しい言い方。
0394デフォルトの名無しさん
NGNGC++におけるメンバ関数はオブジェクト指向言語一般の用語では
メソッドにあたるってこと。
0395デフォルトの名無しさん
NGNG0396デフォルトの名無しさん
NGNG猫でものサンプルとかいろいろいじると感覚つかめるよ。
ちなみに漏れもCOBOLやってたけど
いまだに判定の比較間違うときあるよ・・
COBOLとCの判定は逆だからきをつけな。
0397デフォルトの名無しさん
NGNG理論はわかるんですが、プログラムが;;
線分の交差判定でやるやつです。
0398デフォルトの名無しさん
NGNG理論がわかるなら、
その理論を紙などに日本語で書いて、
それを C のプログラムに翻訳するだけだろ?
0399デフォルトの名無しさん
NGNGここは言語のスレなんで、実装する上で言語上の疑問点が出てきたら
ここで聞いても良いが、宿題丸投げなら宿題スレに逝け。
つか、ちょこっとググっただけで参考になりそうなサイトがいくつか出てきたぞ。
0400デフォルトの名無しさん
NGNG自身のクラスの仮想関数だけだったっけ?
親クラスのは呼び出してもいいんだよな
0401デフォルトの名無しさん
NGNGどこかでファイルがクローズされると、その旨をメッセージで表示するような
ものをC言語で作りたいのですが、難しいでしょうか。
環境はRed Hat Linux9 + gcc-3.2.2です。
相当難しいようならば、もうちょっとLinuxの知識をつけてから作りたいと思います。
0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNG0404デフォルトの名無しさん
NGNG0405デフォルトの名無しさん
NGNGまずviおぼえれ
0406デフォルトの名無しさん
NGNGそんなルールは無い。
0407デフォルトの名無しさん
NGNGコンストラクタが完走するまでvtblの構築って終了しないんじゃなかったっけ?
ctor
vtbl-make
vtbl-dele
dtor
って順番なのかなーと
0408デフォルトの名無しさん
NGNG0409デフォルトの名無しさん
NGNG○そのクラスの
0410デフォルトの名無しさん
NGNG基底クラスの初期化リストの後なら問題なく呼び出せる。
ただしコンストラクタ自身のクラスよりも派生したクラスでオーバーライドされたものは呼ばれない。
0411デフォルトの名無しさん
NGNGallocator::allocateは以下のように書けばいいのでしょうか?
pointer allocate(size_type n, const void *hint)
{pointer p = malloc(sizeof(T) * n);
for (size_type i = 0; i < n; i++)
new(p+i) T;
return p;
}
MSDNを見たところ、operator new(n)を呼び出せとあるので
コンストラクタの実行はしなくてもいいのかなって思ったりもしてるんですが。
0412デフォルトの名無しさん
NGNGコンストラクタの実行はしちゃいけない。
0413デフォルトの名無しさん
NGNGそうみたいですね、ありがとうございました。
しかし、コンパイルが通らないのでどこが悪いか分からずサンプルを検索して
http://www.josuttis.com/cppcode/allocator.html
このサイトに行き当たったのですが、
どなたかVC6+STLPortでこのサンプルコンパイルできているひと居ませんか?
自作のアロケータでも、ここのでも同じエラーがでてるので、
VC6じゃカスタムアロケータ対応できないのかなとは思っているのですが。
0414デフォルトの名無しさん
NGNGC:\Program Files\Microsoft Visual Studio\VC98\Include\stlport\stl/_alloc.h(503) : error C2784: 'class _STL::allocator<_T
p2> &__cdecl _STL::__stl_alloc_rebind(class _STL::allocator<_Tp1> &,const _Tp2 *)' : 'class _STL::allocator<_Tp> & 用のテ
ンプレート引数を 'class MyLib::MyAlloc<int>' から減少できませんでした。
C:\Program Files\Microsoft Visual Studio\VC98\Include\stlport\stl/_alloc.h(502): クラス テンプレートのメンバ関数 'int *__t
hiscall _STL::_STLP_alloc_proxy<int *,int,class MyLib::MyAlloc<int> >::allocate(unsigned int)' のコンパイル中
C:\Program Files\Microsoft Visual Studio\VC98\Include\stlport\stl/_alloc.h(503) : error C2228: '.allocate' : 左側がクラス、
構造体、共用体ではありません。
C:\Program Files\Microsoft Visual Studio\VC98\Include\stlport\stl/_alloc.h(502): クラス テンプレートのメンバ関数 'int *__t
hiscall _STL::_STLP_alloc_proxy<int *,int,class MyLib::MyAlloc<int> >::allocate(unsigned int)' のコンパイル中
こういうエラーがてるんです。
0415デフォルトの名無しさん
NGNG�@で問題なく動作していたCGIが�Aの環境で一部動作しなくなりました。
//環境
�@RedHat7.3
gcc-2.96-113
apache-1.3.27-2
�ARedHat9
gcc-3.2-2-5
httpd-2.0.40-21.9
原因を調べていくとどうも日付計算部分がエラーを起こしているようです。
一般的な日付計算ですが何が問題なのか検討もつきません。
(ググッたのですが・・わかりませんでした。。gccが原因??)
どなたか教えていただけないでしょうか?よろしくお願いいたします!!
/*-----ソース一部抜粋------*/
#include <stdio.h>
#include <time.h>
struct tm*ptr;
time_tlt;
intNowYY, NowMM, NowDD;
lt = time(NULL);
ptr = localtime(<);
NowYY = ptr->tm_year + 1900;
NowMM =ptr->tm_mon + 1;
NowDD = ptr->tm_mday;
/*----------------------*/
0416デフォルトの名無しさん
NGNGMFC は使っていません.
元は C プログラマではないのに,C で DLL を作っているので
頓珍漢な事を聞いているのかもしれませんが,お願いします.
やりたい事は,ある関数のコールバックを待つ,という事なのですが
どのように待てばいいのかがわかりません.
コールバック関数は,
//set end callback
DLL_SetEndCallback(stream, endcallback, 0);
DLL_Stream_Play(stream);
// ここで待ちたい
// コールバックが発生したら,
// 終了処理にいきたい.
といった感じになるのですが,
ここで endcallback を待つために,どのように待たせればいいのかが
わからないのです.
何かヒントでもいいので頂けないでしょうか?
0417デフォルトの名無しさん
NGNGデバッガ使えばわかるだろ
0418デフォルトの名無しさん
NGNG最低限、コンパイルが通るソース貼れや
0419デフォルトの名無しさん
NGNG通らないか?
まぁ、<がhtmlで不等号に化けてるからそのままコピペしたら通らないが。
0420デフォルトの名無しさん
NGNG0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNGg++でコンパイルしてarでまとめた静的ライブラリが複数あるんだけど
これを1つの静的ライブラリにまとめるにはどうやったらいい?
0423デフォルトの名無しさん
NGNGarで展開して、纏めなおし。
やり方はman arしろ。
#tarに似ていると言えば見当つくかな?
0424デフォルトの名無しさん
NGNG展開してからやらなきゃ駄目なのかぁ。
やってみます。ありがとう。
0425415
NGNGそうなんです。そのまま貼り付けたら文字が変換されてました。
ソース全部は長いのでおかしな部分(ここをはずすと正常にCGIが動きます)
のみ貼り付けました。
コンパイルはエラー無く通るのでTime関数のバグかな?と思ったんですが。。
apacheのバージョンが原因なのか、gccのバージョンが原因なのか検討つきません。
0426デフォルトの名無しさん
NGNG何を待ちたいのか書け
0427デフォルトの名無しさん
NGNGにソースを貼りました。
コメント部分が正しいかどうかの判定をお願いします。
それと、いくつかわからないところがあります。
struct tm *tm_now;
は何のために宣言?
now = time(NULL);
は以下のどっちが正しいのですか?
/* 現在時刻を取得 */
/*秒数形式の時刻*/
tm_now = localtime(&now);
は以下のどっちが正しいのですか?
/*now を構造体 tm型の変数に変換する*/
/*時刻形式へ*/
0428デフォルトの名無しさん
NGNG> struct tm *tm_now;
> は何のために宣言?
tm_now = localtime(&now);
この関数で使ってるじゃん
now = time(NULL);
/*万国標準時(UCT)の1970年1月1日の00:00:00からの経過時間(秒単位)*/
tm_now = localtime(&now);
/*環境変数TZにより現地時刻に変換(UTC秒→tm型構造体)*/
0429デフォルトの名無しさん
NGNGありがとうございます。
>tm_now = localtime(&now);
>この関数で使ってるじゃん
そうでした。暑さのせいでおかしくなってます・・・
tm_now = localtime(&now);
は
time関数が返す形式の時刻が代入されたnowから、値を読み出し、
ローカルの時間に変換する。
で良いんですよね?
0430デフォルトの名無しさん
NGNGwindows2000 bccの環境で
-----------------------------
#include <stdio.h>
main(){
int a[100000], i, j, jmax,n;
n = 100000;
for (i = 2; i < n; i++)
printf("%6d", i);
}
}
---------------------------
として実行すると問題なく動くにも関わらず
a[500000] と宣言すると何も出てきません
配列に何か制限でもあるのでしょうか?
(65535とかならなんとなく納得できたのですが・・・)
0431デフォルトの名無しさん
NGNG0432430
NGNGprintf("%6d", i);
}
---------------------------
で実行した場合です
0433デフォルトの名無しさん
NGNGofstraam outClientFile ( "MyFile.dat", io::****);
while ( cin >> Mydata ) { outClientFile << Mydata; }
見たいな感じで出きるんでしょうか? よろしくお願いします。
0434デフォルトの名無しさん
NGNGオプションに-lS:200000をたしてみたらどう?
数値はsizeof(一番でかい変数)を16進法にしたもの+αぐらいに
0435デフォルトの名無しさん
NGNGに加えて、
tm_now->tm_year+1900
の部分について
現地時間をtm構造体に定義されている各要素に参照渡ししている
というのはわかるのですが、なぜ値(2004)が得られるのかがわかりません。
tm_yearはただの変数ですよね?
0436デフォルトの名無しさん
NGNGlocaltimeがtm_nowのメンバをnowを元にセットしているんだ。
そのnowにはtime(NULL);のところで現在の日付・時刻が入っている。
localtimeはtm_yearには1900年からの経過年数を入れるようになっていて、
今は2004年だから104が入ることになる。
だからtm_now->tm_year+1900で2004が得られる。
0437デフォルトの名無しさん
NGNGnowが日本時間であったら、localtimeは日本時間をセットするってことですよね?
0438デフォルトの名無しさん
NGNG>>428を声に出して10回読むべし
0439デフォルトの名無しさん
NGNGで、時刻を表示するところについての質問です。
for(;;){
if(kbhit()){
break;
}
now = time(NULL);
if(prev == now) /* */
continue; /* */
prev = now; /* */
tm_now = localtime(&now);
printf("現在の時刻は %2d時%2d分%2d秒\r", tm_now->tm_hour, tm_now->tm_min, tm_now->tm_sec);
/* */の3行部分が無くても表示できるのですが、カーソルの動きがちょっとおかしくなります。
この部分は、prev(初期値-1)とnowが同じならば、prev = now;を実行しないという命令ですよね?
この部分が無いことで、なぜカーソルの動きがおかしくなるのかがわかりません。
0440デフォルトの名無しさん
NGNGcontinueの意味を理解してる?
その3行をコメントアウトすると、ループが回るたびにprintfを実行するようになる。
カーソルが常に移動してるから、ちらついて見える。
0441デフォルトの名無しさん
NGNG直下の処理のみをスキップするのではなく、
continue以降の処理全てをスキップするんですね。
やっとわかりました。
0442何度も質問してすいません。
NGNG>>427
のコメント抜きです。
staticを使うのはなぜでしょうか?
0443デフォルトの名無しさん
NGNG0444デフォルトの名無しさん
NGNG初期化が最初お一回しか行われないからだろ。
0445デフォルトの名無しさん
NGNG×最初お一回
○最初の一回
0446デフォルトの名無しさん
NGNGstatic const char * const week[] = { /* ... */ };
にしておきたいところだね。
で、staticにしないとmain()の実行時に無駄なコピー作業が発生する。
0447デフォルトの名無しさん
NGNGどうもありがとうございました。
とりあえず、一段落つけます。
まだ疑問が残ってますが、そちらは自分で考えてみます。
0448デフォルトの名無しさん
NGNG気にするな(w
0449デフォルトの名無しさん
NGNG何回も呼ばれる関数ならまだしも、mainなら別に問題はないような。
0450デフォルトの名無しさん
NGNGこれはたまたまmainだからだろ。
質問への回答は446で良いし、448は単なる厨発言じゃねぇかよ。
0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNGそうかもしれないが、「mainなのに」とは一言も書いてない。
おまえはなぜそう思ったんだ?
0453デフォルトの名無しさん
NGNG0454デフォルトの名無しさん
NGNG0455デフォルトの名無しさん
NGNGgcc3.4とgprof-2.15(binutils-2.15)を入れて、実行ファイルのプロファイルを
取ろうとしました。gcc hoge.c -pgとしてa.outを実行すると、
gmon.outが生成されました。もちろんexit()で抜けています。
そこで、gprofを実行すると、
gprof: gmon.out file is missing call-graph data
といって刎ねられます。何が不味いのでしょうか。gccあるいは
binutilsをインストールする時に、なにか特別なライブラリとかを
configureしておかなければならないのでしょうか?
0456455
NGNGglibcを入れようとして構築できなかった気が。
すくなくともgcc-2.95とか使ってたときはgprofは使えてました。
0458デフォルトの名無しさん
NGNGC++です
0459デフォルトの名無しさん
NGNG\rとスペースとか、^Hを出力した文字数分とか出力すると
消えたように「見える」端末もあるかもしれないけど、
根本的に出したものは消せない。
0460デフォルトの名無しさん
NGNGできないのですか・・・
コンソールアプリで作るのは諦めるべきですか?
0461デフォルトの名無しさん
NGNG0462デフォルトの名無しさん
NGNGタイマー(´・ω・`)
0463デフォルトの名無しさん
NGNGこんなの?
0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNGおお!それだ!と思ったらちゃんとうごかない
printf("\x1b[12;10H");
cout << "\x1b[12;10H";
どっちも同じ
\x1bは┘みたいなのになって
その先が普通に表示されます
0466デフォルトの名無しさん
NGNGWindows2000以降はANSIエスケープシーケンスは働きません。
boost:progress_displayのソースのようにやりましょう。
0467デフォルトの名無しさん
NGNGなんですか?それ
0468デフォルトの名無しさん
NGNG0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNGコンパイルはできるのですが実行すると
Segmentation fault (Core dumped)
と出てしまいます。なぜなんでしょうか?
#include <stdio.h>
#include <gmp.h>
int main(void)
{
unsigned int i;
mpz_t array[10];
mpz_init(array[10]);
for(i=0;i<=9;i++){
mpz_set_ui(array[i], 10);
}
for(i=0;i<=9;i++){
mpz_out_str(stdout, 10, array[i]);
putchar('\n');
}
mpz_clear(array[10]);
return 0;
}
0472デフォルトの名無しさん
NGNGfor(i=0;i<=9;i++){
mpz_init(array[i]);
}
for(i=0;i<=9;i++){
mpz_clear(array[i]);
}
0473デフォルトの名無しさん
NGNGありがとうございます
無事に実行できました
gmpで配列を使う時は要素一つ一つについて
初期化・クリアーをしてやらないといけなかったんですね。
勉強になりました。
0474デフォルトの名無しさん
NGNGそもそも定義、宣言でない array[配列の数] が明らかにあり得ないと気づけ。
0475デフォルトの名無しさん
NGNGmpz_t sum;
struct foo { mpz_t x, y; };
mpz_t vec[20];
という記述があったので大丈夫かと思いました
mpz_array_init (mpz t integer_array[], size t array_size,
mp size t fixed_num_bits)
これを使うとは思うのですが使い方がわからなかったので
何とか他の方法でできないかと思っていました。
0476デフォルトの名無しさん
NGNG>mpz_t array[10];
>mpz_init(array[10]);
~↑~
これのことでは?
0477デフォルトの名無しさん
NGNGclass A
{
static long ID;
public:
・・・
};
やった事がなかったもんで、試しにstaticのメンバー変数
作ってみたんですけど、コンパイルエラーになります。
どう使うんですか。
というか使えないんですか?
入門書調べたけど載っていないもんですから。
0478デフォルトの名無しさん
NGNGスマソ。
0479デフォルトの名無しさん
NGNGhttp://black.sakura.ne.jp/~third/programming/cpp/cpp41.html
0480デフォルトの名無しさん
NGNG最初に
mpz_t array[10]:
と宣言しましたから
mpz_init(array[10]);
で、arrayの要素がすべて初期化されると思ったんです。
>>そもそも定義、宣言でない array[配列の数] が明らかにあり得ないと気づけ
mpz_init(array[10])で
array[10]を初期化しようとしたわけではないです。
初期化・クリアーをするにはforをつかって一個一個してやるしかないんですか?
0481デフォルトの名無しさん
NGNG>mpz_array_init (mpz t integer_array[], size t array_size, mp size t fixed_num_bits)
見れば gmpとやらを知らない俺でも
mpz_array_init(array, 10, 初期値);
って使うのかなという想像は出来るわけだが
0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNGありが�d
あれ?478でsageて
入れたはずなのに
ageてる?
0484デフォルトの名無しさん
NGNG「入門書きっちり読んでから出直して来い」
って言っていいかな?
0485デフォルトの名無しさん
NGNG「Cの入門書」って言わないとgmp周りを漁りそうな希ガス
0486デフォルトの名無しさん
NGNGどれが良いのかワカリマセンでした。
幾つか見た感じだとこれ↓がヨサゲだったんですけど、どうですか?
http://page5.auctions.yahoo.co.jp/jp/auction/e38806429
0487デフォルトの名無しさん
NGNG今読んでる入門書のサンプルプログラムにはprintf()という関数が頻繁に出てきます
どうやらこれはstdio.hとかいうファイルかその先にソースがあるようですけど
それには画面の右から何ドット目上から何ドット目*nを光らせて文字のようなものを
画面に表示させるとかいう根本的なコードが書かれてるんでしょうか
それとも画面に文字を表示させるというのはコンパイラに標準で備わった機能なのか
OSに標準で備わった機能なのかどうなんでしょう
それと似たような疑問ですが
コマンドプロントで動作するプログラムと
ウィンドウやダイアログにhello worldと表示させるプログラムとでは
根本的な違いというものはあるんでしょうか
ウィンドウやダイアログを表示するプログラムは
コマンドプロントで動作するプログラムを滅茶苦茶複雑にしたもの
と考えていいんでしょうか
それともコンパイラにはこれはコマンドプロント用 これはウィンドウ・ダイアログ用のソフト
と指示を与えてコンパイラはそれぞれ区別してコンパイルしているんでしょうか
初心者が知る必要のないことかも知れませんが
疑問に思い始めるとポインタの基本の章にも身が入りません
誰か教えてください
0488デフォルトの名無しさん
NGNGprintfなどであれば、OSにホゲホゲという文字を出力してくれ、という風な事となる
その先は画面かプリンタかファイルかはどうでもいい事なので、OSまかせ。
ウインドウのプログラムのほうは、違ってるかもしれないし、同じかもしれない。
どのOSか等でしぼると答えやすいんだが。
0489デフォルトの名無しさん
NGNGウィンドウズを使ってるのでウィンドウズの場合というこになります
OSによって違うのならそれも知りたいような気もしますが
>printfなどであれば、OSにホゲホゲという文字を出力してくれ、という風な事となる
>その先は画面かプリンタかファイルかはどうでもいい事なので、OSまかせ。
それはC言語に OSにホゲホゲという文字を出力してくれ という命令が関数としてではなく
コマンド?として存在しているということですか?
0490デフォルトの名無しさん
NGNGまず、Cの規格で、printf関数は標準出力に文字列を出力する機能を持つことになっている。
なので、printf関数を書く人間は、その機能を満たすようにプログラミングするわけだが、
具体的にどのようにすれば出力できるか、というのは、OSやコンピュータによって千差万別なので、
その具体的な方法までは決められていない。
printf関数を書く人間は、そのコンパイラが動作する環境でprintfの仕様を満たす方法を調査し、
その方法をもとに関数を書く。
具体的に、文字を表示するのにOSの機能を利用するのかハードウェアを直接操作するのかは環境次第。
Windowsの場合、Windowsがそういった機能を持つシステムの関数を持っているので、
それを利用しているだろう。
0491デフォルトの名無しさん
NGNG文字だけなら
ttp://kasai86.ld.infoseek.co.jp/asm/asm2.htm
を見てごらん。ふいんき(<なぜか変換できない)は味わえるよ
0492デフォルトの名無しさん
NGNGダウト。
0493デフォルトの名無しさん
NGNG不陰気、腑陰気、婦陰気
0494デフォルトの名無しさん
NGNGダウト
0495デフォルトの名無しさん
NGNGOSのシステムの関数を使ったりハードウェアを直接操作したりするというのであれば
例えばウィンドウズではシステムの関数を使うということですが
ならハードウェアと直接操作することは出来ないのかそれともしないだけなのか
あーなんだろ その
printf()を書く人はC言語の仕様通りになるようにC言語で書くということになるわけで
えーハードウェアを直接操作するという機能は
C言語の仕様外の機能で
ということはC言語じゃないということないなるのかならないのか
頭が混乱してきましたね
今日は休んで疑問を整理します
0496デフォルトの名無しさん
NGNG>えーハードウェアを直接操作するという機能は
>C言語の仕様外の機能で
インラインアセンブラ
0497デフォルトの名無しさん
NGNG0498デフォルトの名無しさん
NGNGなんのためにOSがあるんだ?
OSの存在意義を考えろ
0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNGあとOSをどういう言語で書いたかも考えろ
0501デフォルトの名無しさん
NGNG> OSの存在意義を考えろ
綱引きする時に使う
0502デフォルトの名無しさん
NGNG。一緒に入ってる入門書の
コードを入力してビルドするまではできてるんですが、デバッグしても
ウィンドウになにも表示されないんです。
シンボルが読み込まれていませんとでてるんですがどうゆうことなんでしょうか?
超初心者ですいません。
0503デフォルトの名無しさん
NGNGどういう質問なの?
デバッグが死体の?
ブレークポイント張った?
デバッグ実行した?
0504デフォルトの名無しさん
NGNG掛け声は「そいや、そいや」でしたが?
0505デフォルトの名無しさん
NGNGありがと。>>501の意味がやっとわかったw
0506デフォルトの名無しさん
NGNG0507デフォルトの名無しさん
NGNG(デストラクタはできますが)
なぜならコンストラクトする時点で型が確定しているから。
(deleteは基底クラスのポインタ経由でできるからデストラクタ
はvirtual宣言できるが、new時には new CBase、new CDerived
と型を明示するからあいまいになりようがない)
0508デフォルトの名無しさん
NGNGお答えありがとうございます
class aaa{
public:
aaa();
virtual aaa(int bbb);
};
この場合もvirtualは必要ないということですよね?
0509デフォルトの名無しさん
NGNGいらないYO!
コンストラクタは特殊な関数なので、派生クラス
のインスタンスを初期化するとき、C++は
基底クラスのコンストラクタ→派生クラスのそれ
と順にコンストラクタをcallしてくれる。
0510デフォルトの名無しさん
NGNG必要ないではなく、付けられない。
というか、何でおまえはvirtualを付けたがっているんだ?
複数のコンストラクタは単なる関数のオーバーロード。
0511デフォルトの名無しさん
NGNG0512デフォルトの名無しさん
NGNGg++ 3.3.4だと
>error: コンストラクタは virtual 宣言できません
ってエラーになるけど?
0513デフォルトの名無しさん
NGNG0514デフォルトの名無しさん
NGNG0515デフォルトの名無しさん
NGNGと言う人がいますが、そんなに気になるほどの
オーバーヘッドってあるんですか?
どういう時に重要になるんでしょう?
0516デフォルトの名無しさん
NGNGアセンブラ勉強しろよ
0517デフォルトの名無しさん
NGNGハァハァ
0518デフォルトの名無しさん
NGNG要するにおまえは知らないから答えられないということだなw
0519デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNG>どういう時に重要になるんでしょう?
その関数の中身が十分小さく、呼出回数が多い時。
プロファイルしてみるとシステム全体に占めるコストが分かる。
0521デフォルトの名無しさん
NGNGものすごくわかりにくいんで、ほかになんかいい入門書ありませんか?
0522デフォルトの名無しさん
NGNG分かりやすさは人それぞれ。
本屋に言って片っ端から立ち読みしろ。
0523デフォルトの名無しさん
NGNG推薦図書/必読書のためのスレッド PART 18
http://pc5.2ch.net/test/read.cgi/tech/1083665944/l50
0524デフォルトの名無しさん
NGNG今、処理時間の表示できるCのフリーのコンパイラを探しています。
現在、使っている「Cmachine」では、処理時間の表示が
どうやらできなそうなのですが、
皆さんが使っているコンパイラで、処理時間表示ができるものがありましたら、
お教えいただけると嬉しいです。お願いします。
0525デフォルトの名無しさん
NGNG処理時間ってのはコンパイルする時間を表示させたいの?
それとも実行ファイルにある処理をさせてその処理時間を表示させたいの?
後者ならclock()またはdifftime()でできるけど?
0526デフォルトの名無しさん
NGNG質問内容が不十分ですみません。
実行ファイルの処理時間のことです。早々と回答いただきありがとう御座います。
ただ、clock()の使い方を、今ネットで勉強しています。
どのように書けば良いのかまだわかりませんが、勉強してみます。
本当にありがとう御座いました。
0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNG0529デフォルトの名無しさん
NGNGプロファイルでググレ
0530デフォルトの名無しさん
NGNGWindowsのAPIで任意のアプリケーション(任意のウィンドウ?)のカレントディレクトリを取得する関数ってご存知の方いらっしゃいますか?
GetCurrentDirectoryだと自分自身のプロセスのカレントディレクトリしか取得できないみたいで、どうしていいのかわかりません。
方針としてはGetActiveWindowかGetForegroundWindowで取得したハンドルをもとに、そのアプリケーションのカレントディレクトリを取得してファイル操作などをしたいと考えています。
よろしくお願いします。
0531デフォルトの名無しさん
NGNGスレ違い。こっち
Win32API質問箱 Build20
ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/l50
0532デフォルトの名無しさん
NGNGフックしてフックプロシージャで取得し、
アプリケーションにプロセス間通信で送るとか
0533デフォルトの名無しさん
NGNG1読め。
ここは言語と環境の問題を切り分けられなかったり
判断のつかない人(や、面倒な人)用のスレだろ。
C++の話題限定なら相談室と統合してるよ。
0534デフォルトの名無しさん
NGNG>>1のどこに
>ここは言語と環境の問題を切り分けられなかったり
>判断のつかない人(や、面倒な人)用のスレだろ。
と書いてあるのだろうか?
そもそもここはC/C++言語の相談室で、特定の開発環境やライブラリの
操作に関しては専用スレに誘導するというスタンスが以前から続いているが?
0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNGより適切な場所で行う方がいいでしょ。
0537530
NGNGプロセス間通信に関してわかってないので、調べてみました。
すぐには理解できなさそうですが、フックプロシージャの中でなら情報をチラ見できるっていうイメージでしょうか?(ちょっと言葉が悪いですね・・・)
ただ、今まではインスタンスハンドルかウィンドウハンドルあたりを使ってAPI関数一発かなぁとか想像していたので、そう簡単にはうまくいかないということがわかっただけでも収穫です。
ありがとうございます。
>>531さんをはじめレスくれた方々も、気を悪くしないでください。失礼しました。
0538デフォルトの名無しさん
NGNG次スレのテンプレにはこれを明確にしておきましょ。
0539デフォルトの名無しさん
NGNGフックプロシージャは、フックを注入した各プロセス空間で動作することになる。
>>536 より適切な場所で行う方がいいでしょ
それは確かだけど、スレ違いというわけではない。
0540デフォルトの名無しさん
NGNG0541デフォルトの名無しさん
NGNG0542デフォルトの名無しさん
NGNGすぐにでも一通り使えるようになりたいので簡単なので良いのありませんか?
一応Cは分かります。
0543デフォルトの名無しさん
NGNG推薦図書/必読書のためのスレッド PART 18
http://pc5.2ch.net/test/read.cgi/tech/1083665944/
0544デフォルトの名無しさん
NGNG環境依存OKなC/C++の質問ね。
言語に関係しない質問はスレ違いだよ。
初心者は自分ではその区別がつかないことも多々あるが、
その場合、専用スレがあればそっちに誘導するということで
ずっとやってきているのに、いまさら蒸し返してどうする。
0545デフォルトの名無しさん
NGNGよく分からないけどShellExecuteでカレントを指定して立ち上げればいいのでは?
exeの場所が知りたいのならGetModuleFileName辺りを調べるといいかも。
0546デフォルトの名無しさん
NGNGありがと、
テンプレ参考になりました。
0547デフォルトの名無しさん
NGNGここ辺りから1冊どうぞ。
ttp://www.data-house.co.jp/seriestoppc.html
0548デフォルトの名無しさん
NGNG頭悪そうな本ばっかりだな
0549デフォルトの名無しさん
NGNGそんなに言うのなら頭悪そうじゃない本を薦めたら?
0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNG書籍名だけでも十分アレだが、
著者名も負けず劣らずだな。
0552デフォルトの名無しさん
NGNG10分でわかる マンガハッカー 入門
かなぁ。C++かどうかは知らんが・・・
0553デフォルトの名無しさん
NGNG-9999を読み込むまで次々と整数値を読み込んでいき、合計値および
平均値を表示するプログラム。なお、最後に読み込んだ
-9999は合計には加えない。注)do while文を使用すること。
変数は下記を使用すること。
int i; int n; int sum;
<実行結果>
どんどん整数を入力してください。(ただし、-9999で終わります)
1個目:15
2個目:65
3個目:84
4個目:96
5個目:23
6個目:45
7個目:85
8個目:-9
9個目:57
10個目:-9999
合計:461
平均:51.22
0554デフォルトの名無しさん
NGNGようかんマンがC/C++の宿題を片付けて見せます 26棹
http://pc5.2ch.net/test/read.cgi/tech/1088860889/
0555カメソライダー
NGNG0556デフォルトの名無しさん
NGNGC++の超初心者です。
どなたかアドバイスお願いします。
あるデータをFFT処理をし、その結果が
メモ帳のテキストデータとして表示されるようになっています。
一行目に周波数、二行目にパワースペクトルが表示されるようになっているんですが、
このデータを周波数、スペクトルと分けてプログラムの中に読み込みたいのですが、
どうしたらよいのでしょうか?
0557デフォルトの名無しさん
NGNGこのスレでも怪しいが・・・
fscanfで検索を。
0558デフォルトの名無しさん
NGNG初心者を超えたのなら甘えるなよ。
0559デフォルトの名無しさん
NGNG周波数、パワースペクトルは組込型(doubleなど)でいいなら
std::basic_ifstream使えばすむけど。
詳しいアドバイスが欲しければ、もっと具体的に質問すべし。
0560デフォルトの名無しさん
NGNG拡張機能を入れたメモ帖を作成しているのですが、そこでかなーり困ってます。
具体的な処理として行いたいのが
スレッド特異的ホットキーを使いホットキー登録。
WM_HOTKEYが実行されたら以下の動作を実行
1.現在アクティブになっているウィンドウのハンドルを取得(これはGetActiveWindowを使う事で解決しています)
2.取られてきたハンドルを元に範囲指定してる文字列をクリップボードにコピー
3.クリップボードに保存されている文字列をメモ帖に張り付け(ここは自分のメモ帖のEDITコントロールにSendMessageでWM_PASTEを実行する事で出来ている)
2番目の処理がどうもうまく行きません・・と、言うよりもどの関数を利用するのか手持ちの資料じゃさっぱり・・・(TT
今の方式でもしハンドルを元に文字列を取ろうとすると、アプリケーションの種類で上手くいかない可能性もありますし。
例としてやってみたいアプリケーションでの処理を上げておきます
・IEで範囲指定した文字列を自作メモ帖で指定したホットキーを押した時にメモ帖に張り付け
・MSワードで範囲指定した文字列を自作メモ帖で(以下略
簡潔に言うと、外部アプリケーションで範囲指定した文字列をクリップボードに貼り付けて自分のメモ帖プログラムに貼り付けたいのです。
課題提出期限が明後日・・・誰か力貸して下さい_| ̄|○
0561560
NGNG環境はWinXP/2000
使用ソフトはVC++6.0です
0562デフォルトの名無しさん
NGNG宿題スレに逝け。
0564デフォルトの名無しさん
NGNGTBBUTTON tbb[] = {
{ 0 , IDM_UME , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0} ,
{ 1 , IDM_MOMO , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0},
{ 1 , IDM_SAKURA , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0}
} ;
と宣言、初期化して BCC でコンパイルすると
「初期化の一部だけにカッコがついている」と警告を受けるのですが、
もっと正しい記述の仕方があるのでしょうか?
0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNG#include <stdio.h>
main()
{
printf("hello world");
}
が2003ではコンパイルできません
普通のC言語未対応になったんですかね?
0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNG\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ そんなエサで俺様がクマ――!!
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
(´⌒; (´⌒;;;
0569デフォルトの名無しさん
NGNG.NETからは全く新しい言語体系に変わりました
今までの知識は全く役に立ちません。
0570デフォルトの名無しさん
NGNG\/ ● 、_ `ヽ ====== #include <stdio.h>
/ \( ● ● |つ int main(void) /* 返却値の型を省略するとint */
| X_入__ノ ミ ======= {
、 (_/ ノ /⌒l printf("Hello World");
/\___ノ゙_/ / ===== return 0; /* C99では不要 */
〈 __ノ ==== }
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
(´⌒; (´⌒;;;
0571デフォルトの名無しさん
NGNG0572デフォルトの名無しさん
NGNGprintfの場合は%18.15fなどで出来たのですが・・・初心者質問で申し訳ありません。
0573デフォルトの名無しさん
NGNGでググってみ
0574デフォルトの名無しさん
NGNGprecisionですね、ありがとうございます。
0575デフォルトの名無しさん
NGNG0576デフォルトの名無しさん
NGNG好きなだけヘッダに書きな
ふふふ
0577デフォルトの名無しさん
NGNGふふふ
0578デフォルトの名無しさん
NGNG全てインライン関数指定になるからプログラムサイズがすごいことになってマジオススメ
0579デフォルトの名無しさん
NGNGインライン指定しても、実際にインラインになるかどうかはコンパイラにお任せ。
0580デフォルトの名無しさん
NGNGんなことくらい知ってるけど、それが何か???
0581デフォルトの名無しさん
NGNGんなことくらいわかるけど、それが何か???
0582デフォルトの名無しさん
NGNGじゃああなたは一体何が聞きたかったの?
0583575
NGNG自分で分けたほうが小さく出来るんだよね?
ヘッダで定義するのは雪駄下駄くらいにしとけてことでOK?
>>582
>>581はオレじゃないよ。
単に2ファイルにわけると保守がメンドイなと。
0584デフォルトの名無しさん
NGNG開発用、公開用とヘッダファイルを使い分けることができるのがミソなのな。
0585デフォルトの名無しさん
NGNG> 全てインライン関数指定になるから
またこういう大嘘をつくんだから ;-)
0586デフォルトの名無しさん
NGNGJavaみたくヘッダで全ての関数定義した場合で
インライン指定にならないケースを教えて貰えないかい?
結果的にインラインにならないとしてもインライン指定はインライン指定だよ。
0587デフォルトの名無しさん
NGNGclass Hoge {
public:
void hoge() const;
};
void Hoge::hoge() const { std::cout << "hoge\n"; }
0588デフォルトの名無しさん
NGNGおまいさんそれをヘッダに書く気か?
本当に関数定義をヘッダに書きたいなら全部templateにするのがお勧め。
0589デフォルトの名無しさん
NGNGとりあえず、おまいはこれまでの流れを読み直してこい。
0590デフォルトの名無しさん
NGNG>>575-を読んでレスをつけたんだが、見当違いな事言ってるか?
良かったらどこがおかしいか指摘してくれるとありがたい。
0591デフォルトの名無しさん
NGNGはぁ・・・
ついでにもう一つ教えてもらいたいんだが、「Javaみたく」って字は読めないの?
0592デフォルトの名無しさん
NGNG> ついでにもう一つ教えてもらいたいんだが、「Javaみたく」って字は読めないの?
みんな読めてますね。
あなただけは、読んだ上でその文章の意味を間違えているようですが ;-)
0593デフォルトの名無しさん
NGNG読めてないじゃん。;-)
Javaは>>587のような記述が出来るようになってたのか?
あと「みんな」だって。お前だけだよアホくさ。
0594デフォルトの名無しさん
NGNG> 読めてないじゃん。;-)
読めていないと書けないレスに向かってこんなこと書いても、
馬鹿を晒す結果になるだけですね :-P
> あと「みんな」だって。お前だけだよアホくさ。
いえ、俺だけ読めているわけではありません。みんな読めています。あなた以外 ;-)
(とか書くとまた馬鹿を晒してきそう)
0595デフォルトの名無しさん
NGNGバカ晒してるのはお前「も」だよ :-P
で、Javaは>>587のような記述が出来るようになってたのか?
0596デフォルトの名無しさん
NGNG> バカ晒してるのはお前「も」だよ :-P
いえ、あなたですね :-P
> で、Javaは>>587のような記述が出来るようになってたのか?
とか言ってるから「読めてない」という話になるわけです ;-)
0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNGはいはい、書けないでしょ。
つまり>>587は「Javaみたく」を満たしていない記述。
あと
>いえ、あなたですね :-P
ワザワザ「」を付けてあげたのに「も」が読めなかったの?
やっぱ読めてないのお前ジャンw
俺はバカ晒しているのを自覚してるよw
お前もちったぁ自覚しろ :-)
0599587
NGNG正直
>Javaみたく
の部分は読んでなかった。
「ヘッダで」じゃなくて「クラス定義の中で」って書いてくれれば
こんなことにはならなかった。
0600デフォルトの名無しさん
NGNG> つまり>>587は「Javaみたく」を満たしていない記述。
あなたの誤読の範疇の話をいくらしても意味無いですね ;-)
> ワザワザ「」を付けてあげたのに「も」が読めなかったの?
読めるのは当たり前では
> やっぱ読めてないのお前ジャンw
と、ここでも思い込みで頑張るわけですね :-P
> 俺はバカ晒しているのを自覚してるよw
なるほど。自覚しているわけですか。それなら、
> お前もちったぁ自覚しろ :-)
これが荒唐無稽な馬鹿発言なのもちゃんと理解しましょう ;-)
0601デフォルトの名無しさん
NGNG面白いw
晒し上げられたから他のギャラリーがもっと乱入してきてグダグダになるまで頑張るかw
>>599 を見る限り、「みんな」じゃないなw
やっぱ読めてないのはお前だよ :-)
0602デフォルトの名無しさん
NGNG575の「Javaみたく」は、「Javaみたく全てクラス定義の中に〜」ではなく
単にファイル分けの話、つまり「Javaみたく、ヘッダファイル一つに〜」という
意味であると解釈するのが自然だし、より厳密な態度をとるなら
「はっきりと言っていないから断定できない」とするのが適切なのは明白なんだけどね。
ここを読まず&考えずに、勝手にクラス定義に全部書くって話に解釈して、
そこから一歩も出ようとしないのが約一名いる。
0603デフォルトの名無しさん
NGNG> >>599 を見る限り、「みんな」じゃないなw
あなたと>>599、二名になりましたね ;-)
> やっぱ読めてないのはお前だよ :-)
いえ、あなたです :-P
0604デフォルトの名無しさん
NGNGエーw
「Javaみたく、ヘッダファイル一つに〜」
Javaってヘッダファイルないじゃんw
0605デフォルトの名無しさん
NGNG「単に」がポイントですね。
0606デフォルトの名無しさん
NGNGC++の話でしょ?
0607デフォルトの名無しさん
NGNGJavaにヘッダが無いってことは
Javaみたく、ってのは「ヘッダで全ての関数定義」にかかるわけじゃなくて
「全ての関数定義」にかかるだろ。かかんない?もうどっちでもいいよw
>>602
>そこから一歩も出ようとしないのが約一名いる。
そこから一歩出ると何に話が広がるのw?
0608デフォルトの名無しさん
NGNG言葉の使い方は575に突っ込んでくれ。俺としては、
575は要するに「hとcppに分けるのマンドクセ。hに全部書いちゃダメなん?」
って訊きたいだけだろう
ってのが言いたいことなんで。
0609デフォルトの名無しさん
NGNG> もうどっちでもいいよw
もう、というか、最初から絡みたかっただけでは? ;-)
0610デフォルトの名無しさん
NGNG保守がメンドイって言ってるんだから
宣言と定義を分けて、二箇所変更が起きるようなやり方はしないだろw
>>609
俺にはお前が絡みたかっただけに思えるんだがw :-)
0611デフォルトの名無しさん
NGNGでも、彼(彼女?)は「2ファイルにわける面倒さ」しか言ってないし。
0612デフォルトの名無しさん
NGNG> 宣言と定義を分けて、二箇所変更が起きるようなやり方はしないだろw
>>575がそれをするかしないか、の問題ではないですね ;-)
0613デフォルトの名無しさん
NGNGそこは>>575の意図がどうのという話ではないわけです ;-)
0614デフォルトの名無しさん
NGNG確かに、勝手に「Java出身なら宣言と定義を分けることにメンドクサさを感じるだろう」と勝手に思い込んでたってのはあるなw
本当はどうなのか>>575が出てきて言ってくれないかなw
>>612-613
じゃあ、どういう話だったのw?
お前の脳内ストーリーを書き込んでくれないかなw
0615デフォルトの名無しさん
NGNG> じゃあ、どういう話だったのw?
あとから出てきた人達の脳内の議題に関する話なわけですね ;-)
> お前の脳内ストーリーを書き込んでくれないかなw
ログを読めばいいのでは?
(俺の解釈はログと同じなので)
0616デフォルトの名無しさん
NGNGお前具体的には何も言ってないねw いや言えないんでしょw? :-)
0617デフォルトの名無しさん
NGNGそれが断末魔ですか ;-)
0618デフォルトの名無しさん
NGNGあはは そっくりお返ししようw
「それが断末魔ですか ;-)」が断末魔ですか ;-)
0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNG0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNG複数のコンパイル単位にインクルードされた場合、
リンク時に多重定義エラーが出ないか?
586じゃないけど、やっぱinline指定が必要な気が。
0623デフォルトの名無しさん
NGNGint x=10;
scanf("%d",&x)の&xは、xは10をさしてる訳じゃなくて、
xのアドレスをさしていると言うことですか?それとも
ポインタの&とscanfで使う&は別物なんでしょうか?
0624デフォルトの名無しさん
NGNG別物ではない。
0625デフォルトの名無しさん
NGNGxの値は10だが、&xはxのアドレスを指す。
0626デフォルトの名無しさん
NGNGちゃんと分かりやすく説明しろや
馬鹿か!?おめーら(プッ
0627626
NGNG0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNGfor(;;)
{
n += (int)pow(10, floor(log10(n));
printf("%d,", n);
}
0630デフォルトの名無しさん
NGNGint main()
{
int i,j;
for (j=1; j<=10000; j=j*10)
{
for (i=1; i<10;i++)
printf("%d,",i*j);
}
return 0;
}
0631デフォルトの名無しさん
NGNGエラーばっかりなんだけど
0632デフォルトの名無しさん
NGNGアルゴリズムは自分で考えたのか?
その実装方法をここで聞くくらいならいいが
自分で考える癖をつけないと使えない人間になるぞ
0633デフォルトの名無しさん
NGNG#include <stdio.h>
int main(void)
{
int hoge;
int moge;
for (hoge = 1; hoge <= 100; hoge *= 10)
{
for (moge = 1; moge <= 3; moge++)
{
printf("%d", hoge * moge);
if (moge < 3)
printf(",");
if (moge == 3)
printf("・・・");
}
}
puts("って増やす方法教えてください。");
return (0);
}
0634デフォルトの名無しさん
NGNG俺でも不恰好ながら出来た、がんがれ
0635デフォルトの名無しさん
NGNG0000000000000000000000・・・
になってしまいます。
なぜでしょうか?
VC6です。
#include "stdafx.h"
template< int count >
void hoge()
{
if( count < 10)
{
printf("%d", count);
hoge< count +1 >();
}
};
int main(int argc, char* argv[])
{
hoge< 0 >();
return 0;
}
0636デフォルトの名無しさん
NGNG0637デフォルトの名無しさん
NGNG635はそれ以前のような....
0638デフォルトの名無しさん
NGNGどうなって欲しいのですか?
0639デフォルトの名無しさん
NGNGhoge< count +1 >();これかw
0640デフォルトの名無しさん
NGNG真っ当なコンパイラなら、そのコードはエラーになるはず。
hoge<n>がhoge<n+1>を実体化しようとして、決して終らないからね。
0641デフォルトの名無しさん
NGNGプロパティクラスのインスタンスにsetter/getter/objの3つの値が必要で、
プリミティブ型ひとつひとつをプロパティ化すると、
オブジェクトのサイズが数倍に膨れ上がっちまいます。
なにか綺麗な解決方法ないですか?
0642635
NGNGなぜ駄目なのか全然わかりませ〜ん
>>if( count < 10)
これがストッパーになってhoge<9>以上は作られないんじゃないんでしょうか?
また、
template< int count >
void hoge()
{
printf("%d\n", count);
hoge< count +1 >();
};
void hoge<10>()
{
printf("%d\n", 10);
};
こうしたら出力が「10」になってしまいました。
訳がわかりません、バグでしょうか?
0643デフォルトの名無しさん
NGNGhoge< 0 >()から
hoge< 9 >()まで生成して0〜9を出力したいんです。
よろしくお願いします。
0644デフォルトの名無しさん
NGNGifの条件判定は実行時に行われる(たとえコンパイル時に真偽が確定していても)。
だから>>642の様に特殊化で対処しないといけない。
g++3.3では、>>642の特殊化の定義の前にtemplate<>を付け加える事でうまく動作したから、
出力が「10」になるのはバグだと思われる。
0645デフォルトの名無しさん
NGNG了解しました、ありがとうございました。
また、ちなみにこういったことが可能な環境または言語ってあるんでしょうか?
0646デフォルトの名無しさん
NGNG642ではif( count < 10)をはずしているので,
>出力が「10」になるのはバグだと思われる。
は違うよ.出力が「10」になるのは正しい.
それはそうと,
関数テンプレートは規格上,特殊化できないんじゃなかったっけ?
私の勘違いだったら申し訳ない.
0648デフォルトの名無しさん
NGNGいえ、スタートが
int main(int argc, char* argv[])
{
hoge< 0 >();
return 0;
}
ですので「10」では間違いです。
VC6だとクラステンプレートで正常動作を確認しました。
クラステンプレートが無難みたいですね。
0649デフォルトの名無しさん
NGNG>また、ちなみにこういったことが可能な環境または言語ってあるんでしょうか?
「こういったこと」と言うのが>>642のコードを動作させる事なら、
VC7.1かg++2.95(うろ覚え)以降を使うべし。
>>646
>642ではif( count < 10)をはずしているので,
>>出力が「10」になるのはバグだと思われる。
>は違うよ.出力が「10」になるのは正しい.
>>642でhoge<0>();を呼んだら出力は「0\n1\n2\n...10\n」になるはずだし、実際そうなった。(g++3.3)
0650デフォルトの名無しさん
NGNGいえ、
if( count < 10)
の部分です。
0651646
NGNG何か分からなくなってきた.
642で,うしろの方に書いてある
void hoge<10>()
{
printf("%d\n", 10);
};
は呼ばれないということでしょうか?
これでテンプレートの実体化がストップするのではないですか?
それはそうと,特殊化ってこうですよね.
template <> void hoge<10>()
{
printf("%d\n", 10);
};
0653デフォルトの名無しさん
NGNGこれか?
0654デフォルトの名無しさん
NGNG0655646
NGNG>>出力が「10」になるのはバグだと思われる。
>は違うよ.出力が「10」になるのは正しい.
は撤回.本当は
出力は「012345678910」になるのが正しい
とのつもりで書いたのだけど.
0656デフォルトの名無しさん
NGNGa[][5], b[][10]
0657デフォルトの名無しさん
NGNGすいません、説明不足でした。
a[8][5], b[8][10]だとして
hoge(a);
hoge(b);
と渡したいときのことでした。
0658デフォルトの名無しさん
NGNGCではaとbを同じ関数に渡すのはむり。
C++なら
void hoge(int a[][5]) { ... } (型は適当に仮定)
void hoge(int b[][10]) { ... }
ってオーバーロード。
0659デフォルトの名無しさん
NGNGだけどむりだよな
0660デフォルトの名無しさん
NGNGC++の範囲内なら、無理。
0661デフォルトの名無しさん
NGNGありがとうございます。
0662デフォルトの名無しさん
NGNGtemplate<?>
class data
{
public:
?<int> get1() const;
?<float> get2() const;
}
data<std::vector> data1;
data<std::list> data2;
みたいにしたいのですが
0663デフォルトの名無しさん
NGNGtemplate<template <typename,typename> class Cont>
struct Data1
{
Cont<int,std::allocator<int> > get1() const;
Cont<float,std::allocator<float> > get2() const;
};
template <typename T>
struct Data2{
typename T::template apply<int> get1() const;
typename T::template apply<float>::type get1() const;
};
struct Data2arg{
template <typename T>
struct apply{
typedef std::vector<T> type;
};
};
Data1<std::vector> data1
Data2<Data2arg> data2;
2つ目はboost::mplなんかで使われている方法。
1つ目は引数の数が少しでも違ってると動かない(デフォルト引数のことは考慮されない)。
つまり
template <template <typename> class Cont>
struct Data1{};
ではstd::vectorを受け取れない(vectorは2つの型を受け取るテンプレートクラスだから、2つ目は省略可能だけども)
・・・と思ったらMinGWでは動いた(VC7.1ではだめだったが)
0664デフォルトの名無しさん
NGNGttp://mikata.curiocube.com/oop/part3/ch02_encapsulation.html
でC++入門してるのですが、C++では、アクセッサを経由したメンバ変数の比較はできないのでしょうか。
上記サイトに記載されていた、Humanクラス(下記)をインスタンス化し、メンバ変数のAgeを、
if (intanceHuman.Age == 10)
というコードで比較しようとしたところ、
" error C2446: '==' : 'int (__thiscall Human::*)(void)' 型から 'const int' 型への変換ができません。"
というビルドエラーが出てしまいます。
アクセッサを経由しないで比較を行うとうまくいくのですが・・・
コードとしては、直感的なので、このコードが通らないのが不思議というか・・・
// class 宣言
class Human {
public:
// コンストラクタ
Human(int nAge=0 );
// 属性の取得:「年齢」
int Age() { return m_nAge; }
private:
// メンバ変数:「年齢」
int m_nAge;
};
0665デフォルトの名無しさん
NGNGif (intanceHuman.Age() == 10)
0666デフォルトの名無しさん
NGNGなるほど、()を忘れてました・・・
これだと、関数から返される値ではなく、関数自体と定数を比較している・・・
という感じに解釈されそうですね・・・
ありがとうございました=]
0667デフォルトの名無しさん
NGNGところでインタンスって・・・。
0668664
NGNGインタンス...orz
0669デフォルトの名無しさん
NGNG>関数から返される値ではなく、関数自体と定数を比較している・・・
>という感じに解釈されそうですね・・・
そんな馬鹿なことを考えるのはオマだけだ。もっと勉強しろ。
0670デフォルトの名無しさん
NGNGそれは正しい考えじゃないの?
馬鹿なことだとしたら、正しくはどうなのさ?
0671デフォルトの名無しさん
NGNG>>667
0672デフォルトの名無しさん
NGNG関数自体って何?
関数ポインタなら分かるんだが。
0673デフォルトの名無しさん
NGNG関数への参照がそんな感じかな。
メンバ関数への参照はC++には無いが。
0674664
NGNG"関数自体"としたのは、参照される値が、ポインタなのか、関数オブジェクト(C++にあるのか否かは知りません)なのか、はっきりしなかったためです。
あと、勉強中です。
0675デフォルトの名無しさん
NGNG関数オブジェクト使いたければboostをお勧め〜
基本のboost::function、boost::bindからboost::lambdaまで〜
ttp://www.kmonos.net/alang/boost/classes/lambda.html
というかboost入れないとSTLがのアルゴリズムかなり使いにくい気が・・・
あとC++だと関数自体の参照も受け取れる。
template <typename Ret,typename Arg1T>
void func(Ret (&arg)(Arg1T)){
//...
}
0676デフォルトの名無しさん
NGNG{
if( count < 10)
{
printf("%d", count);
hoge(count + 1);
}
};
int main(int argc, char* argv[])
{
hoge(0);
return 0;
}
0677664
NGNGBoostの関数型プログラミング系はあくまで、脇役なのかなと思っていたのですが、
なるほど、ワンライナーっぽく書けると、見通しもよくなりそうですね。
ありがとうございます:)
0678デフォルトの名無しさん
NGNG1つだけ注意する点があるとするならライブラリで無名関数をサポートしているのであって言語レベルでサポートしているわけではないこと。
そのためにコンパイルエラーメッセージがとても読めないものとなる(boost::lambdaは)。
その代わり言語の影響が少ないせいかクロージャをboost::lambda::valを使って実現できたりもする、もっとも変数の寿命はC/C++の規則に従うが。
0679678
NGNGboost::lambda::varだ。
0680デフォルトの名無しさん
NGNGBasic環境のようにString型にキャストして表示するにはどうすればいいのでしょうか?
MessageBox(NULL,(CString)strNumber,"Test",0);
としてもキャストできませんでした
0681デフォルトの名無しさん
NGNGCString::Format
0682デフォルトの名無しさん
NGNGsprintf("%d",num);
0683デフォルトの名無しさん
NGNGintからCStringへはキャストできない。
MessageBox(NULL, CString().Format("%d", strNumber), "Test", 0);
ところでstrNumberがintならプレフィックスおかしくないか?
0684デフォルトの名無しさん
NGNG今までBasicかPerlしか触ったことが無かったので、
文字列の変換についても同じように考えていました。
ところで、プレフィックスがおかしいというのはどういう意味なのでしょうか?
0685デフォルトの名無しさん
NGNGstrはCStringとかstd::string用でintならiとかnのはず
0686デフォルトの名無しさん
NGNG0687デフォルトの名無しさん
NGNG0688デフォルトの名無しさん
NGNGたとえば毎日20040710.datとかファイルをバッチで取得してて、トラブルで取れなかった場合に、
その日を自動的に取得するっていう感じのプログラムってどんな感じですればいいですか?
アドバイスをお願いします。
0689デフォルトの名無しさん
NGNG毎日20040710.datとかファイルを取得してて、トラブルで取れなかった場合に、
その日を自動的に取得するプログラムを作ればいいです。
0690デフォルトの名無しさん
NGNG>>689の一言に尽きます。
ってか全く同じこと書こうとしてた
危うくケコーンするとこだった
0691デフォルトの名無しさん
NGNGこんな考え方はどうかな?
1、ディレクトリにあるファイルを全部取る
2,、取ったファイルはどこか別の場所へ移動
こんな考え方じゃだめ? 非常にシンプル・・・
0692デフォルトの名無しさん
NGNGあなたが自力でプログラミングするにはかなりの勉強が必要のようだ。
プログラミングの勉強が目的でないならオンラインソフトを探したほうが早い。
0693名無しさん@そうだ選挙に行こう
NGNGファイルが取得成功したときとしなかったときで何が違うのか?
その日をどうやって取得するのか
そのあたりをハッキリしてみ
0694デフォルトの名無しさん
NGNG金がないので未だVC6なんだが
namespace Name {
class A
{
static void X(void);
};
}//namespace Name
int main(void)
{
Name::A::X();
//using namespace Name;
//A::X();
return 0;
}
こんなコードが通ってくれやがります。
どうしましょう?
0695デフォルトの名無しさん
NGNGVC6捨てる
0696デフォルトの名無しさん
NGNG何か問題が?
0697デフォルトの名無しさん
NGNG少なくともprivateメンバにアクセスはできないはずですね。
0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNGVC.NETならゴラァって言ってくれるの?
0700697
NGNG0701デフォルトの名無しさん
NGNG0702702
NGNG{
double a1,a2;
int i,Nparameter,nsteps;
Nparameter=5;
nsteps=4;
double result_a1[100];
double result_a2[100];
double result_a3[100];
for(i=0; i<Nparameter; i++){
a1=3+0.1*i;
result_a1[i]=a1;
// for(i=0; i<nsteps; i++){
// a2=4+0.2*i;
// a3=5+0.8*i;
// result_a2[i];
// result_a3[i];
// }
}
for(i=0; i<Nparameter; i++){
cout << result_a1[i] << " " << endl;
}
// for(i=0; i<nsteps; i++){
// cout << result_a2[i] << " " << result_a3[i] << " " << endl;
// }
}
0703702
NGNG入れ子があるとa1が上手く求まりません。
あと、coutですが、エクセルみたいにa1、a2、a3をテキストファイルに
縦表示させたいです。よろしくお願いします。
0704デフォルトの名無しさん
NGNGfor(j=0; j<nsteps; j++){
a2=4+0.2*j;
a3=5+0.8*j;
result_a2[j]=a2;
result_a3[j]=a3;
}
0705デフォルトの名無しさん
NGNG0706デフォルトの名無しさん
NGNG最初に書き込んだスレで答えてやれよ
0707デフォルトの名無しさん
NGNGどこにあるかわからない最初の書き込みなんて追っていけるわけねえだろうがお前が見つけて答えてやれよ
0708デフォルトの名無しさん
NGNGint main(void)
{
int value;
printf("整数の値を入力してください。=");
scanf("%d",value);
if( )
{
if( )
printf("%5dは正の偶数ですね。\n",value);
else printf("%5dは負の偶数ですね。\n",value);
}
else
{
if( ) printf("%5dは正の奇数ですね。\n",value);
else printf("%5dは負の奇数ですね。\n",value);
}
}
空欄部分を埋めたいんですが、最初のifに何を入れて良いかが分からないので、
あとの2つも埋まらない状態です。
お願いします。
0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNG@@@@
0711デフォルトの名無しさん
NGNG書き忘れていましたが、いくつかの間違いを含んだままになってます。
そっちに修正はしないでいいので、ifのあとの空欄をお願いします。
0712デフォルトの名無しさん
NGNGミ・・ ミ ということにしたいのですね?
( ° )〜
0713デフォルトの名無しさん
NGNGif ( value % 2 == 0 )
しかし、間違いがあるのを承知で、しかも断り無く質問するのはどうかと思うぞ。
0714デフォルトの名無しさん
NGNGCとか関係ないし%
宿題スレいけよ2
0715デフォルトの名無しさん
NGNG>>713
>>714
すいませんでした。ちょっと急いでいたもので。
以後気をつけます。
どうもありがとうございました。
0716デフォルトの名無しさん
NGNGcout << kekka1[i] << " " << endl;
}
for (j=0; j<tekiteki; j++){
cout << kekka2[j] << " " << endl;
}
だと、以下のようにできません。
kekka1 kekka2
○ ×
○ ×
: ;
このように表示するにはどうすればいいのですか?
coutかprintfでお願いします。
0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNG折角答えてやったのに、マルチかよ・・・
しね
0719デフォルトの名無しさん
NGNGiostream.hをincludeしようとしたらiostream.hが無いし、
iostreamをincludeして、cout使おうとしたら、std::coutじゃないと使えないし…(´・ω・`)
C++の仕様って変わった?
0720デフォルトの名無しさん
NGNGうらしまさん?
0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNG0723719
NGNG大学入学後はロクに組んでなかったし、
たまに組んだときも、古いコンパイラ使ってたから問題なかったし…
1から勉強し直した方が良さそうやね…
0724デフォルトの名無しさん
NGNG0725719
NGNG0726デフォルトの名無しさん
NGNGGUIのメインウィンドウまで閉じて、プロセスが終了してしまうのを防止したいのですが。
どなたか、方法を御存知ないでしょうか。
WIN_APIの、SetConsoleCtrlHandler() や、HandlerRoutine() が関係しているところまでは msdn で調べたのですが、
具体的なサンプルコードのあるページが見つからず、理解できません。
0727デフォルトの名無しさん
NGNG普通にstd::coutじゃだめなのか?
0728デフォルトの名無しさん
NGNG入れればいいだろ
0729デフォルトの名無しさん
NGNGusing namespace std;
これでいいだろ
0730デフォルトの名無しさん
NGNGhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1089824455
0731デフォルトの名無しさん
NGNGあちこちで聞きまくってるようだが、荒らしのつもりか?
0732デフォルトの名無しさん
NGNG#include <iostream.h>
だった。実行できねぇって文句言う奴多発。
VC6のときはファイルが存在してたんだっけ?
0733デフォルトの名無しさん
NGNGAnd(Hoge& a, Hoge& b, Hoge& c)
{
a = b & c; //※メンバは省略しています
}
のように処理していました。
operatorを使って、operator= (a=b)とoperator&= (a&=c) の組み合わせで
同等なものは作成できましたが、
これを一度に処理することは出来ないのでしょうか?
0734733
NGNG>これを同等の速度で一度に処理することは出来ないのでしょうか?
に、修正させてください。
0735デフォルトの名無しさん
NGNG「一度に処理」の意味がわからん。
0736デフォルトの名無しさん
NGNGスレ違い。
こちらにどうぞ。
http://pc5.2ch.net/test/read.cgi/tech/1085915001/
0737733
NGNG言葉足らずですみませんでした。
operatorで実現した場合、
a=b&cは、a=bと、a&=cの2回呼び出しを行う必要がある(思い込んでいる?)のですが、
それを1回の呼び出しでと言うことです。
Hoge& operator & (Hoge& b, Hoge&c)
{
Hoge a = b; //コピーが必要
a &= c; //直接メンバ同士を演算しているものとして
return a;
}
では、一時的にコピーを作ってしまうので、それを避けたいというのが理由です。
0738733
NGNG訂正
Hoge operator & (Hoge& b, Hoge&c)
0739733
NGNGお騒がせしました。
0740デフォルトの名無しさん
NGNG0742デフォルトの名無しさん
NGNGなぜできないと考えるのかが分からない。
0743デフォルトの名無しさん
NGNG解決したみたいだけど一応。この方が少し良いかも。
Hoge operator & (Hoge& b, Hoge&c)
{
return Hoge(b) &= c;
}
741のはbool(かその他制御式に直接置ける型)へのキャストをオーバーロードすればいい。
0744デフォルトの名無しさん
NGNGありがとうございます。
>>742
えーと、a=b&c と if (b&c) は、戻り値が異なるだけなので
両立出来ないと思っているのですが...
0745デフォルトの名無しさん
NGNG>えーと、a=b&c と if (b&c) は、戻り値が異なるだけなので
>両立出来ないと思っているのですが...
>>743氏も言ってるけどHoge -> bool のキャストをオーバーロードすればいいだろ
0746デフォルトの名無しさん
NGNGoperator bool() const { return true; };
こんなのをメンバ関数に追加するべし。
0747733
NGNG>>746
ありがとうございます。
ここでいうキャストの意味がようやく解かりました。
Hoge operator & (Hoge& b, Hoge& c)と
bool operator & (Hoge& b, Hoge& c)は
両立(同時に定義)できないので、
operator & を使うのであれば、
戻り値Hoge以外はキャスト(if ((bool)(b&c)) など)しなさい、
ということですね。
0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNG普通キャスト演算子のオーバーロードは暗黙的変換でも有効。
つまり>>746のようなキャスト演算子のオーバーロードの関数を作った場合、if (b&c)ってのができる。(boolへの明示的キャストはいらない)
その場合、
1, まずb&c(operator &(Hoge&, Hoge&))をやる。
2, b&cの戻り値はHoge&なんで条件判断はできない。
3, そこでHoge型を引数にとるoperator bool()が自動で呼び出される。(boolなら条件判断ができる)
4, その結果をifが見る。
って流れになる。
0750デフォルトの名無しさん
NGNG0751デフォルトの名無しさん
NGNGoperator &(const Hoge& b, const Hoge& c)だ
0752733
NGNG自分が質問したかったことは、
>>749の1,の時点で
処理を終わらせること(Hogeとboolの区別)が出来ないのでしょうか?ということです。
それぞれ下記のように別々の関数を用意すれば、
Hoge AndHoge(Hoge& b, Hoge& c)
bool AndBool(Hoge& b, Hoge& c)
それぞれが、1,までの処理で済むのですが、
operator&を使った場合、戻り値を2種類以上実現しようすると、
2,以降の処理が必要になるということでいいんですよね?
0753デフォルトの名無しさん
NGNG普段1と4だけ意識させるための(キャストの)オペレータオーバーロードだぞ
0754デフォルトの名無しさん
NGNG初心者から質問させてください。
ここ
ttp://www.kopropo.co.jp/html/KONDO/KHR1_Support.html
にあるRCB-1というコントローラボードについてです。
このボードはRS232で通信するものです。
付属のアプリケーションがあるのですが、
それだと条件分岐が出来ないので、
条件分岐できるようなプログラムをC言語で組んでみたいと思ってます。
しかし、RS232を扱うような書籍が見つけられず困っています。
何か良い書籍、もしくはソースコードがないでしょうか。
0755デフォルトの名無しさん
NGNGお前が何のOSやコンパイラを使ってるのか知らないのに何を薦めろと言うんだ?
0756デフォルトの名無しさん
NGNGすっかり忘れておりました
OSはWindows2000、コンパイラはVC++です
0757デフォルトの名無しさん
NGNGよくわからんが、こんなんじゃだめ?
ttp://members.jcom.home.ne.jp/0434383301/vc10.htm
0758デフォルトの名無しさん
NGNG0759デフォルトの名無しさん
NGNG#include<stdlib.h>
#include<time.h>
int getrand(max)
{
int ransu;
ransu=rand() % max;
return(ransu);
}
int main()
{
int rand;
srand((unsigned int)time(NULL));
rand=getrand(256);
printf("%d\n",rand);
return 0;
}
↑このプログラムを1秒おきに実行すると、
必ず前の乱数より大きな値が出て数字がばらけないんですが
(25→35→40→56→… というように)
timeを種にしてる限りどうしようもないですか?
0760デフォルトの名無しさん
NGNG0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNGint main()
{
int rand;
srand((unsigned int)time(NULL));
rand=getrand(256);
rand=getrand(256);
printf("%d\n",rand);
return 0;
}
0763デフォルトの名無しさん
NGNGそれだと逆に小さくなってくぞ
0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNGint getrand(max)
{
return((int)((double)rand() / ((double)RAND_MAX + 1) * max));
}
0767デフォルトの名無しさん
NGNGソースってのもあるらしいのですが例えばどんなものなんでしょうか?
0768デフォルトの名無しさん
NGNGgcc/linux で使える、メモリ管理上のバグを検出するツール
を探しています。今組んでいるプログラムで、何も効果がな
いはずのコード(同じ初期化処理を何度も繰り返すコード等)
を挿入すると、結果が変わるというバグが取れなくて困って
います。一応ネット上で調べて、memwatchというのを使って
チェックしてみたところ、メモリリークは検出できて、debugし
たのですが、最初の問題は解決しません。memwatchの開
発者も、全ての問題が検出出来るわけでは無いと書いてい
ます。どなたか、この種の問題をdebugするのに良いツール
をご存知でしたら、お教えください。
(ちなみに、最適化オプションによって現象が出たり出なかっ
たりします。debugモードでコンパイルすると出なくなるので、
gdbでトレースすることもできそうにありません。)
0769デフォルトの名無しさん
NGNGint* p = malloc( sizeof(int)*100 );
とか。C++の方が、全般に型チェックがうるさくなってる。
0770デフォルトの名無しさん
NGNGcygwin + mingwn + gcc 相談室
http://pc5.2ch.net/test/read.cgi/tech/1058134693/
にいったほうがいいと思う
0771768
NGNGありがとうございます。行ってみます。
0772デフォルトの名無しさん
NGNG乱数の種がほぼ1づつしか変わらないのが原因だね。
1秒ごとというのが手動ならμ秒やミリ秒を返すAPIがあればそれを使う。
gettimeofday()とかtimeGetTime()とか。環境依存だけど。
linuxとかなら/dev/rand使う。
0773デフォルトの名無しさん
NGNG乱数の精度を求めるなら標準関数のrandは使わないほうがいいみたいよ。
右シフトして3ビットぐらい捨てるとまだマシになるらしい。
それでもだめなら
ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html
これが定番みたい。
0774デフォルトの名無しさん
NGNG例えば
#include<iostream.h>
using namespace std;
int main ()
{
cout << "三秒後に「三秒経ちました。」と出力します。" << endl;
//次のcoutを表示するまで三秒の間をもちたい。
cout << "三秒経ちました。" << endl;
return 0;
}
環境はVC++6.0です。
超初心者の質問ですがよろしくお願いします。
0775デフォルトの名無しさん
NGNG0776デフォルトの名無しさん
NGNGSleep()
0777デフォルトの名無しさん
NGNG精度の問題じゃないってば。
種の問題。
0778デフォルトの名無しさん
NGNG標準関数のrandを使ってるのが問題。
0779774
NGNGありがとうございます。
cout << "三秒後に「三秒経ちました。」と出力します。" << endl;
Sleep(3000);
cout << "三秒経ちました。" << endl;
しかし上記のようにSleepを使ってみたところ
『error C2065: 'Sleep' : 定義されていない識別子です。』
とエラーが出てしまいました。
なにかincludeしなくてはいけないのでしょうか??
0780デフォルトの名無しさん
NGNG#include <windows.h>
その前にまずはチュートリアルあたりを嫁。
0781774
NGNGできました!
ありがとうございます。
今度からはチュートリアルを熟読してから質問します^^;
0782759
NGNGMTを使って解決しました。どうもありがとうございます。
0783デフォルトの名無しさん
NGNGerror C2440: '=' : 'HGDIOBJ' から 'HBRUSH' に変換できません。
warning C4244: 'return' : 'WPARAM' から 'int' に変換しました。データが失われているかもしれません。
というエラーが出てしまいます。
まんまコピペしても結果は同じでした。
どうすればいいか教えてください。
環境はVC++.netです。
猫でもわかるのwidows SDK編イントロダクション
ttp://www.kumei.ne.jp/c_lang/sdk/sdk_00.htm
0785デフォルトの名無しさん
NGNGどうもすいませんでした。
myProg.hbrBackground =GetStockObject(WHITE_BRUSH);
の部分を消したらできました。
0786デフォルトの名無しさん
NGNG0787デフォルトの名無しさん
NGNG0788デフォルトの名無しさん
NGNG0790デフォルトの名無しさん
NGNG”hoge.cpp”
#include "func.h"
void hoge[
double a;
func(a);
}
”func.cpp”
#include "func.h"
inline void func(double)
{
〜
}
”func.h”
inline void func(double);
このようにしリンクしようとするとerror LNK2001:が出てしまいます。
これはインライン関数の使い方が間違ってるのでしょうか?
0791デフォルトの名無しさん
NGNGinline指定子はインライン展開を強制するものではないので、
指定しない場合と同様にhoge.cppだけでなくfunc.cppもリンクする必要がある。
つーか、それ以前にコンパイル単位が違う段階でインライン展開しようがないんだけど。
0792デフォルトの名無しさん
NGNG> ”func.cpp”
#include "func.h"
void func(double)
{
〜
}
0793デフォルトの名無しさん
NGNG0794デフォルトの名無しさん
NGNG0795デフォルトの名無しさん
NGNGなるほど、コンパイル単位が違うと駄目なんですね・・・考えてみればそりゃそうか・・・
0796モモカ
NGNG大学生の研究でC++を使うことになってオブジェクト指向がわからなくって困ってるの
C言語でいうメイン関数とサブルーチンの関係とオブジェクト同士のデータと手続きの
関係って何が違うの?メイン関数からサブルーチンにデータを渡して、サブルーチンで
計算してメイン関数に関数に返すっていう流れをみるとオブジェクト指向じゃないかって
思うの。どうなんですか?教えてくださーい。ペコリ
0797デフォルトの名無しさん
NGNG0798デフォルトの名無しさん
NGNGコマンドが調べてもわかりません。
誰か助けて。
普段コンパイルはlcc a.cで通ってます
0799デフォルトの名無しさん
NGNGまずはマニュアル嫁、マルチ。
0800デフォルトの名無しさん
NGNGマルチではなく俺が誘導してきた
0801デフォルトの名無しさん
NGNGなら回答よろしく
0802デフォルトの名無しさん
NGNGごめん
俺に解ってたらこっちに連れてこない
誰か解答よろ
とりあえず俺はBcc32のバージョンは解答してみた
>>798
lib作成 LCCとかでググってみ
0803デフォルトの名無しさん
NGNGlcc ってこれ?
http://www.cs.virginia.edu/~lcc-win32/
↑にマニュアルある。
けど、なんか読んでもよくわからん。
コンパイラオプションにはなさそう。
リンカオプション説明もあるけど、lib作るってのは見当たらないな。
がんばってくれ。
0804デフォルトの名無しさん
NGNG0805デフォルトの名無しさん
NGNG確か妙な名前だったはず。
コンパイラドライバ(lcc)からは作れなかったと思う。
0806デフォルトの名無しさん
NGNG口から酸性の液を吐く凶暴な生物を思い出す。
0807デフォルトの名無しさん
NGNG0808デフォルトの名無しさん
NGNGoar [-]d|q|r|t|x[cuv] [g N] library member-file...
つーかマニュアルはかなり詳しく書いてあるので、ちゃんと読め。
0809デフォルトの名無しさん
NGNG何も知らない小学生で
0810デフォルトの名無しさん
NGNG[ ] [12]=〜〜〜〜〜〜〜〜
などのプログラムで[ ]内に数字を入れない理由を
分かる人教えてください
0811デフォルトの名無しさん
NGNG0812デフォルトの名無しさん
NGNG0813デフォルトの名無しさん
NGNG0814デフォルトの名無しさん
NGNGむしろ、あとの[12]は要素数を指定しないとならないってのがミソなんだが。
0815デフォルトの名無しさん
NGNGありがとうございます。
0816デフォルトの名無しさん
NGNG「配列のポインタ」
と
「ポインタの配列」
の違いについて述べよ
0817デフォルトの名無しさん
NGNGコンパイラは何も数えてないぞ
0818デフォルトの名無しさん
NGNGあー、そういえばObjectARchiverって言ってた気がする。
0819デフォルトの名無しさん
NGNGコンパイラがあとの〜〜〜〜〜〜〜〜で要素数を決定できるから
0820デフォルトの名無しさん
NGNG例えばそのファイルのデータの中の5の倍数番目のデータだけからなる
データファイルを新たにつくるCプログラムはどうしたらよいですか?
0821デフォルトの名無しさん
NGNG数えないでどうやって決定するの?
0822デフォルトの名無しさん
NGNG0823デフォルトの名無しさん
NGNG実際のところ、データのサイズだけ計算すれば十分だから。
0824デフォルトの名無しさん
NGNG演算させるのは、スカラー計算です。
OSは、やはりリナックスになるのでしょうか?
できれば、Windowsでしたいのですが・・・
0825デフォルトの名無しさん
NGNG0826デフォルトの名無しさん
NGNG>OSは、やはりリナックスになるのでしょうか?
でしょねぇ。
0827デフォルトの名無しさん
NGNGUNIX系OSの知識がないと,いきなりはちょっと辛いかもしれません.
参考文献は...
PVM
MPI
OpenMP
Mosix
SCore
このへんのキーワードでぐぐって知識を体系化させて下さい.
MPIの実装の一つmpichはWin版があったような気はします.
0828デフォルトの名無しさん
NGNG0829デフォルトの名無しさん
NGNG数えないし決定もしない。sizeofの利用を除いて。
0830デフォルトの名無しさん
NGNG過去ログ【初心者歓迎】C/C++室【環境依存OK】
>>http://pc5.2ch.net/tech/kako/1059/10590/1059041347.html
の205番目のレスで、見つけたコードを応用して以下のようにしてみました。
AllocConsole();
HANDLE hRead, hWrite;
CreatePipe(&hRead, &hWrite, 0, 0);
_dup2(_open_osfhandle((long)hWrite, _O_TEXT), 1);
cout << "test" << endl;
char sz[100];
DWORD dw;
ReadFile(hRead, sz, sizeof sz, &dw, 0);
sz[dw] = '\0';
MessageBox(hwnd, sz, "test", MB_OK);
要するに自プロセスの標準出力を横取りして、GUIウィンドウに出力したいのですが。
CUI環境では、205番のやり方でOKなんですが、GUIではうまくいきません。
ReadFile でブロッキングされたまま止まってしまいます。
知恵を貸していただけないでしょうか?
0831デフォルトの名無しさん
NGNGが、やっぱりだめです。
ReadFile関数が標準出力を横取りしてくれない。。。
AllocConsoleとの併用はできないんだろうか。
AllocConsole();
HANDLE hWrite = GetStdHandle(STD_OUTPUT_HANDLE);
int dFile = _open_osfhandle((long)hWrite, _O_TEXT);
FILE* hFile = _fdopen(dFile, "w");
*stdout = *hFile;
HANDLE hRead, hWrite;
CreatePipe(&hRead, &hWrite, 0, 0);
_dup2(_open_osfhandle((long)hWrite, _O_TEXT), 1);
cout << "test" << endl;
char sz[100];
DWORD dw;
ReadFile(hRead, sz, sizeof sz, &dw, 0);
sz[dw] = '\0';
MessageBox(hwnd, sz, "Message", MB_OK);
0832デフォルトの名無しさん
NGNGちょっと疑問が出来てしまいました。
WindowsXp、VC++6.0 SP6.0 の環境では
CP_ACP と CP_OEMCP の結果が同じに見えます。
これって日本語版Windows以外やWindows9x等では結果が違うのでしょうか?
(ページコード というのは地域の事?)
ご存じの方いらっしゃいましたら御願いします。
0833デフォルトの名無しさん
NGNG日本語版Windowsではどちらも同じです。
英語版では異なってます。
「OEMコードページ」なんかで検索してみれば基礎的な知識が得られると思います。
0835デフォルトの名無しさん
NGNGそれのビットマップについての質問です。
始めに、外部ビットマップは、一つの要素に一つのビットマップを使うタイプです。
ツクール2000みたいに、ひとつにいろんなのを載せるタイプではありません。
1
ビットマップを表示するときは、表示するたびに外部ビットマップを開くか、
使う全ての外部ビットマップを、プログラムの始めに
メモリビットマップに書いておくのか、どちらがいいのでしょうか。
2
透過の為のマスクビットマップは、外部に用意しておくか、
プログラムの始めに元のビットマップから製作するか、どちらがいいのでしょうか。
0836デフォルトの名無しさん
NGNG自分が作りたいアプリケーションに合わせて仕様を決めましょう。
例えば、格闘ゲームなんかの場合は
1.登場キャラで足りない分のデータだけをメモリに読み込む。
2.マスク作成
3.ゲーム部分
4.次ステージに登場しないキャラの部分のメモリ解放
5. 1.に戻る
といった感じ。
必要無いデータは必要になる前の違和感を感じない所で読めば良い。
0837デフォルトの名無しさん
NGNGclass A {
private:
...
template <typename T> int compare( T a1, T a2 ) { return ( a1 > a2 ? 1 : 0 ); }
friend class B;
};
class B {
...
};
の状態で、クラスBの内部で compare( 1, 2 ) とか compare( 3.0f, 4.0f ) を評価したいのです。
色々と検索したところ、テンプレート関数の実体がないため(?)らしいというあたりまではわかったのですが、
具体的にどうすれば解決できるのか教えていただけないでしょうか。
0838デフォルトの名無しさん
NGNG1.
頻繁に同じ画像を描画するのであればメモリ上に置いておく必要があるし、
不特定多数の画像の切り替えが必要な場合は、表示させるときにだけ読み込めばいい。
2.
特に問題なければ読み込み後でのマスク作成でいいと思う。
0839835
NGNGありがとうございます。
僕が作ろうとしているのは、FE等のターン制SRPGです。
基本的には、1は後者の方で、2も後者のようですが、
さらに、メモリっとくビットマップの種類を
できるだけ小さくしておく工夫が必要なんですね。
分かりました。
0840835
NGNGありがとうございます。
>1
SRPGなので頻繁ではないタイプだと思います。
透過をマスクを使わずSetPixelVでやっていたので、
キャラを選択して移動範囲を表示するとき、
薄く青描けるのがあると思いますが、あれが激遅でした。
>2
1で読み込んだ時、その分のマスクをその時に作ればいいのですね。
分かりました。
0842デフォルトの名無しさん
NGNG普通に↓のように書けばいいのでは。
class A {
template <typename T> int compare( T a1, T a2 ) { return ( a1 > a2 ? 1 : 0 ); }
friend class B;
};
class B {
void test( A& a ) {
a.compare<int>( 1, 2 );
a.compare<float>( 3.0f, 4.0f );
}
};
ただ、VC++ 6.0では問題あったような・・・
0843デフォルトの名無しさん
NGNGint main()
{
int c;
while((c = getchar()) != EOF)
putchar(c);
return 0;
}
を実行しても終了しないんですが、どうやったら終了できるようにできますか?
0844デフォルトの名無しさん
NGNG終わりたい時に電源切ればいい
0846デフォルトの名無しさん
NGNG偽になれば終了します。
終了しないのは偽にならないからです。
0847デフォルトの名無しさん
NGNGCtrl+Cで終了したけど(LSI CとBCCどっちでも)
0849デフォルトの名無しさん
NGNGそのように振舞うgetcharを自分で作る。
0850デフォルトの名無しさん
NGNGCtrl+DとかCtrl+Zとか
0851843
NGNGやってみます
0852デフォルトの名無しさん
NGNGint min(int x,int y);
int main(void) {
int x,y,ans;
printf("1番目の整数を入力してください。\n");
scanf("&d",&x);
printf("2番目の整数を入力してください。\n");
scanf("%d",&y);
printf("\n\nx=%d,y=%d\n\n",x,y);
ans = min(x,y);
printf("最小値は%dです",ans);
return 0;
}
int min(int x,int y) {
if(x>y) {
return y;
} else {
return x;
}
}
が期待通りに動きません。最初のscanfが実行されてないみたいです。
なぜ?
0853デフォルトの名無しさん
NGNG目を凝らしてよ〜く見てみろ
0854デフォルトの名無しさん
NGNG0855デフォルトの名無しさん
NGNGShift6→Shift5
0856デフォルトの名無しさん
NGNG0857デフォルトの名無しさん
NGNG俺のキーボードではShift+6だよ
0858デフォルトの名無しさん
NGNG(・∀・)ソレダ!
0859デフォルトの名無しさん
NGNG0860デフォルトの名無しさん
NGNG思った通りに動くわけですね。
0861デフォルトの名無しさん
NGNG0862デフォルトの名無しさん
NGNGdouble func(double tensuu){
int k;
double kekka;
printf("親なら1を子なら0を入力してください\n");
scanf("%d",&k);
if(k==1){kekka=tensuu*1.5;}
else if(k==0){kekka=tensuu;}
return(kekka);}
double kiriage(double kekka) {
int i,j,k;
i=kekka;
if(i%100==0){k=kekka;}
else{
j=100-i%100;
k=kekka+j;}
return(k);}
void main(){
int tokuten[7][4]={0,1300,2600,5200,1000,2000,3900,7700,1300,2600,5200,8000
,1600,3200,6400,8000,2000,3900,7700,8000,2300,4500,8000,8000,2600,5200,8000,8000};
int toitu[3]={1600,3200,6400};
int k,hansuu,fusuu,hansuu2,bai,n;
doubletensuu,kekka;
tensuu=0;
kekka=0;
hansuu=0;
n=0;
while(1){
printf("飜数を入力してください\n七対子で4飜以下の場合は0を入力してください\n");
printf("役満は一種類に付き13飜で換算して入力してください\n");
scanf("%d",&hansuu);
0863デフォルトの名無しさん
NGNG0864862続き
NGNGif(hansuu<=10){
if(hansuu<=7){
if(hansuu<=5){
if(hansuu<=4){
if(hansuu==0){
if(hansuu<=-1)
{printf("不正な値です、正しい数値を入力してください\n");}
else {
printf("飜数を入力してください\n");
scanf("%d",&hansuu2);
tensuu=toitu[hansuu2-2];
kekka=func(tensuu);
kekka=kiriage(kekka);
printf("得点は%lfです\n",kekka);}}
else {
printf("符数を入力してください\n");
scanf("%d",&fusuu);
tensuu=tokuten[(fusuu/10)-2][hansuu-1];
printf("親なら1を子なら0を入力してください\n");
scanf("%d",&k);
if(k==1){
kekka=tensuu*1.5;
kekka=kiriage(kekka);
printf("得点は%lfです\n",kekka);}
else if(k==0){
kekka=tensuu;
printf("得点は%lfです\n",kekka);}}}
0865862続き
NGNGkekka=func(8000);
printf("得点は%lfです\n",kekka);}}
else {
kekka=func(12000);
printf("得点は%lfです\n",kekka);}}
else{
kekka=func(16000);
printf("得点は%lfです\n",kekka);}}
else {
kekka=func(24000);
printf("得点は%lfです\n",kekka);}}
else{
if(hansuu%13==0){
bai=hansuu/13;
tensuu=(double)bai*32000.0;}
else if(hansuu%13!=0){tensuu=32000;}
kekka=func(tensuu);
printf("得点は%lfです\n",kekka);}
printf("終了する場合は0、継続する場合は1を入力してください\n");
scanf("%d",&n);
if(n==0) break;
else printf("処理を継続します\n"); }}
0866862
NGNGソースが汚くて死ぬほど分かりづらい。
0867デフォルトの名無しさん
NGNG#include <string>
using namespace std;
int main()
{
string str[2][2];
str[0][0] = "就職 ";
str[0][1] = "活動 ";
str[1][0] = "会社 ";
str[1][1] = "訪問 ";
cout << str[0] + str[1] << endl;
return 0;
}
上手くいかなかったんですがどうすればいいですか
0868デフォルトの名無しさん
NGNGせ め て 、 希 望 す る 結 果 ぐ ら い は 書け!
0869デフォルトの名無しさん
NGNG内定
0870デフォルトの名無しさん
NGNGこうすればコンパイルは通る。
cout << str[0] << str[1] << endl;
0871デフォルトの名無しさん
NGNG0872デフォルトの名無しさん
NGNGワロタ
0873デフォルトの名無しさん
NGNGDLLは問題無く完成したのですが、VBのプロジェクトにインポートして
オブジェクトブラウザを開いた時にメゾッドやプロパティの説明文が出るようにしたいのです。
*.odlファイルが怪しいような気はするのですが、調べても分かりませんでした。
※現状のVBオブジェクトブラウザの表示
Baudrate As Long
TotalCom.RS232C のメンバ
※理想的なVBオブジェクトブラウザの表示
Baudrate As Long
TotalCom.RS232C のメンバ
RS232C通信のボーレートを設定します。
環境
Winowd Xp
Microsoft Visual Studio 6.0 Enterprise SP6
Visual C++
Visual Basic
知っている方いらっしゃったらよろしく御願い致します。m(_ _ )m
0874デフォルトの名無しさん
NGNG参考になるページなどあれば教えて下さいませんか?
一応ググッたのですが見つからなかったので。
0876デフォルトの名無しさん
NGNGってどうやって呼び出すんですか?
0877デフォルトの名無しさん
NGNGoperator delete(p,std::nothrow);
一応聞いとくが、何がしたいんだ?
0878デフォルトの名無しさん
NGNGあるSizeOfHeapCommitの値までなんでしょうか?デフォルトでは0x1000(64KB)となっている
ようなんですが・・・。
0879デフォルトの名無しさん
NGNGnew(std::nothrow) obj;で確保した領域は
operator delete(void*, std::nothrow_t const &)で開放せにゃなんないと聞いたもので。
0880デフォルトの名無しさん
NGNG基本的な考え方は正しいけど、例外的に、nothrowを取るnew/deleteは
普通のnew/deleteと混用できる。
0881デフォルトの名無しさん
NGNGlcc-win32 Ver.3.8での話なんですが、
変数を特定のセクションに割り当てる方法ってあるんですかね?
VCだと
#pragma data_seg (".hoge")
とかでなんとかなりますが、
lcc-win32ではググっても資料があまりないみたいで…
0882デフォルトの名無しさん
NGNG入力してRETURNキーを押すたびに警告音がします。
うるさいので、無くす方法はないでしょうか?
0883デフォルトの名無しさん
NGNGもちろんありますよ
0884デフォルトの名無しさん
NGNG0885デフォルトの名無しさん
NGNG0886デフォルトの名無しさん
NGNG0887デフォルトの名無しさん
NGNG0888デフォルトの名無しさん
NGNGclass A
{
};
A<HANDLE, INVALID_HANDLE_VALUE> a; // <--ここ
上記のように書いたのですが、コメントの行で
error C2964: テンプレート パラメータの式が不正です。
と出ます。
試しに
A<HANDLE, (HANDLE)INVALID_HANDLE_VALUE> a;
としても同様のエラーが出ます。
なぜエラーになるのでしょうか?理由がわかりません。
VC++6.0SP6 Win2k
0889888
NGNGA<HANDLE, NULL> a;
としたらコンパイルが通りました。
NULLは良くてINVALID_HANDLE_VALUE(#define (HANDLE)-1)が駄目な理由がさっぱりわかりません。
0890デフォルトの名無しさん
NGNG何を根拠にして使い分ければ、よいのでしょうか?
0891デフォルトの名無しさん
NGNGたとえば何?
0892デフォルトの名無しさん
NGNGfopen と CreateFile 等です
0893デフォルトの名無しさん
NGNG0894デフォルトの名無しさん
NGNGmemset( a, '\0', sizeof(a) ) と
ZeroMemory(a, sizeof(a) ) は同じでないの?
0895デフォルトの名無しさん
NGNGじゃあ同じ物なら
memset( a, 1, sizeof(a) ); を ZeroMemoryにやらせてみろよ
0896デフォルトの名無しさん
NGNGテンプレートがキャストまで解釈してくれると思ってるのか?
0897デフォルトの名無しさん
NGNG根本的に勉強がたりないみたいです・・・・。
もう一個だけ質問ですが
strcpy と lstrcpy も全然別のものですか?
0898デフォルトの名無しさん
NGNGお前は人に聞く前にやる事があるだろ?
0899888
NGNGキャストが駄目だとするとどうすればいいのでしょうか?
そのまま-1と書くと
error C2440: 'specialization' : 'const int' から 'void *' に変換することはできません。(新しい動作 ; ヘルプを参照)
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
が出て駄目ですし、こういうことは不可能なのでしょうか?
0900デフォルトの名無しさん
NGNG問題のソースです → http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_26/class.txt
上のソースの場合、CarをmainとRacingCar.cppで2回読んでいるようでいけないのかなと思うのですがどうなんでしょうか。。
あとcppファイル全部で#include <iostream>をしているのも無駄にインクルードしているような気がするのですが。。
0901900
NGNG0902デフォルトの名無しさん
NGNGヘッダファイルの中身を見たことがあるか?
中身の#のついた行が何を行っているか考えてみれ。
0903デフォルトの名無しさん
NGNG0904デフォルトの名無しさん
NGNG元の質問は、どのように使い分けるか、という質問だからあんな返答でもいいんじゃねえ?
0905デフォルトの名無しさん
NGNGじゃあお前が答えてみろよ
0906デフォルトの名無しさん
NGNGHANDLEはおそらくポインタ型のtypedefだろう。
テンプレート引数に渡すポインタの値は、
外部リンケージを持つオブジェクトを指さなければならない。
規格ではNULLもダメ。
0907デフォルトの名無しさん
NGNGさっきから話に出てくるのはWin32のAPIなので
Win32APIをやってから質問に来てみたらどうでしょうか?
>>900
分割コンパイルというのをご存知ですか?
0908デフォルトの名無しさん
NGNGZeroMemoryは#undefしない限りマクロでmemsetにされる罠
0909デフォルトの名無しさん
NGNGfprintfのprintf版のようにある特定の特別な条件について
良く使うので別の名前で再定義に近い形になってるだけですね
0910デフォルトの名無しさん
NGNGメモリにセットしたいとき−>memset
でも実装は2ついらない
0911888
NGNG「外部リンケージ テンプレート 引数」でググってみたら
ttp://www.tietew.jp/cppll/archive/9458
が見つかりました。
すごく面倒臭そうなので別の方法を考えたいと思います。
勉強になりました。ありがとうございました。
0913デフォルトの名無しさん
NGNGtemplate<class T, bool f = true> struct A
{ bool func(T) const { return f; } };
こんなテンプレートクラスがあり、例えばTがcharの場合特殊化したいと思ったとすると
template<> struct A<char>
{ bool func(char) { return f; } };
と書いたのですがA<char, true>の特殊化と判断されるようです。
ttp://www.fides.dti.ne.jp/~oka-t/cpplab-template-2.html
ここを参考に
template<bool f> struct A<char, f>
{ bool func(char) { return f; } };
としてみましたが
error C2989: 'A<char,f>' : このテンプレート クラスはすでに非テンプレート クラスとして定義されています。
error C2988: 認識できないテンプレートの宣言または定義です。
と出ます。
A<char, true>とA<char, false>それぞれ書くしかないんでしょうか?
0914デフォルトの名無しさん
NGNG> 上のソースの場合、CarをmainとRacingCar.cppで2回読んでいるようでいけないのかなと思うのですがどうなんでしょうか。。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_26/class.txt
で示されてるコードは2重インクルードしてません.(コンパイル通るでしょう?)
なぜなら,900さんが(2重インクルードしないで)コンパイルが通るように巧妙に#includeを使ってるからです.(笑)
2重インクルードとは,同じコンパイル単位(1cppあたり1コンパイル単位)で
インクルードガードが施されてない同一のヘッダファイルを2回以上インクルードしてしまう状態です.
900さんはヘッダファイルではincludeしないように心掛けてるんではないでしょうか?
ヘッダファイルでincludeを減らすのは良い心掛けとは思いますが,例えば,
RacingCarクラスはCarクラスを継承してるので,RacingCar.hの先頭で#include "Car.h"するのが普通です.
RacingCarクラスの構築にはCarクラスの定義が必須だからです.
そして,main.cppとRacingCar.cppの#include "Car.h"を外します.
もう少しプロジェクトの規模が大きくなると,このようなヘッダファイルでの#includeのために
上記2重インクルードの状態が発生するので,ヘッダファイルではインクルードガードを施す必要があります.
900さんのコードにはないですね.インクルードガードについては
http://www.02.246.ne.jp/~torutk/cxx/file/includeguard.html
ここで説明されてる内部インクルードガードを参考にして下さい.
> あとcppファイル全部で#include <iostream>をしているのも無駄にインクルードしているような気がするのですが。。
分割コンパイルの利点を享受するためには仕方のないことです.それと,main.cppではいらないですね.
0915デフォルトの名無しさん
NGNG心配するな。実装は一つだ。
0916デフォルトの名無しさん
NGNGうだうだ言ってないでもっと手短に説明出来ないか?
0917デフォルトの名無しさん
NGNG>907を読め
分割コンパイルと答えが出てるだろ
0918914
NGNGじゃ,まとめると,907の分割コンパイルってのに加えて,
- 2重インクルードを誤解している可能性がある.(900のコードは2重インクルードしてない.)
- ヘッダにインクルードガードがない.(2重インクルードしてないので必要性を理解してないかも.)
を指摘致します.
0919デフォルトの名無しさん
NGNG「こうじゃない」ではなく「こうだ」の方が理解しやすい
0921デフォルトの名無しさん
NGNGテンプレートの部分的特殊化ってVC++6.0はサポートしてたっけ?
0923デフォルトの名無しさん
NGNGタダで使えるVisual C++ $2
http://pc5.2ch.net/test/read.cgi/tech/1086287039/
これでもOK。
0924900
NGNG0925デフォルトの名無しさん
NGNG#ifndef INCLUDED_のあとにはヘッダファイルの名前を大文字で入れなくてはいけない決まりなのでしょうか。
レベルの低い質問でスミマセン。。
0926デフォルトの名無しさん
NGNG何回も読み込むと型を何回も定義するから
それを避ける為に一度読んだヘッダーファイルならば再度読まないようにしてんじゃね?
0927デフォルトの名無しさん
NGNG// common.h
#include <date.h>
...
// source.c
#include <date.h>
#include "common.h"
...
例えば上の様にソフトが組まれていた場合、コンパイラは2回 date.h を組み込むワケだけど
#ifndef INCLUDED_DATE
#define INCLUDED_DATE
// INCLUDED_DATEが宣言されてないので有効
...
#endif
#ifndef INCLUDED_DATE
#define INCLUDED_DATE
// INCLUDED_DATEが宣言されているので無効
...
#endif
という様に無駄が出ない(名前がぶつかってエラーになる等を発生させない)ようにしているだけ。
0928デフォルトの名無しさん
NGNGデストラクタによってポインターを削除されないのですが、
関数内での演算の結果は元の配列に反映されませんよね。
で、この関数内での演算の値を元の配列に返したいのですがどのようにすればよろしいのでしょうか?
例えば下のプログラムでfugaの値の変更を反映させるにはどのようにすればよいのでしょうか?
class hoge{
public:
int* a;
hoge(){a = new int[10];};
hoge(hoge& other){a = new int[10]; for(int i = 0; i < 10; i++){a[i] = hoge.a[i]};
~hoge(){delete [] a;};
}
void main(){
hoge fuga;
for(int i = 0; i < 10; i++){
fuga.a[i] = i;
}
fuga(hoge& fuga);
}
fuga(hoge& fuga){
for(int i = 0; i < 10; i++){
fuga.a[i] = fuga.a[i] + 10;
}}
0929デフォルトの名無しさん
NGNGもう少し落ち着いてせめてコンパイルが通るコードを(笑)
0930デフォルトの名無しさん
NGNG↑
← →
↓
こうなってるのはナンダ?と思って押したら全画面表示になってしまったんですけど、
これってどうやって戻すんでしょうか…?
もう1つ申し訳ないのですが、
C――WINDOWS
┠―sample
同じ階層のWINDOWSディレクトリからsampleディレクトリに
カレントディレクトリを変更したいのですが、これはどのように命令したらよいのでしょうか。
C以前の、大変くだらない質問だとは思うのですが、どなたか助けてください。。
0931デフォルトの名無しさん
NGNG板違い
0932デフォルトの名無しさん
NGNGアドバイスを受けて自分なりにインクルードガードを使用したソースにしてみました。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_27/teisei.txt
こんなかんじでいいのでしょうか。
0933デフォルトの名無しさん
NGNG>DOS
自分もやり方がわからないけど、
ウィンマークのキーを押して、タクスバーが出てくるから、
そこで右クリックして閉じる。また開いても元に戻っている。
>ディレクトリ
WINDOWSディレクトリの中にsampleがあるなら、cd sample (Enter)、
違うなら、cd .. (Enter) の後、cd sample (Enter)。
0934デフォルトの名無しさん
NGNGAlt+Enter
0935デフォルトの名無しさん
NGNGCを今日から本を読みながら始めたものの、説明すらないような箇所で詰まる有り様で。。
親切に教えてくださいまして大変助かりました。
ありがとうございました〜
0936デフォルトの名無しさん
NGNG全画面表示はEXITコマンドでDOSプロンプトごと終了させる方法もある
0937デフォルトの名無しさん
NGNGつーか本が良くないし足りない
0938デフォルトの名無しさん
NGNGまずはvi覚えましょう。
話はそれから・・・
書籍の参考サイト
http://www.1point.jp/~book_2ch/
0939デフォルトの名無しさん
NGNG0940デフォルトの名無しさん
NGNGあります
0942デフォルトの名無しさん
NGNGDLL を使わないと書けない実装もある
0943デフォルトの名無しさん
NGNG0944デフォルトの名無しさん
NGNG良い回答
>>940
…('A`)
0945デフォルトの名無しさん
NGNG皆様、助言や忠告をありがとうございます。m(_ _)m
0946デフォルトの名無しさん
NGNG#define max(a,b)(((a) > (b)) ? (a) : (b))
となる場合、max(a,b,c)はどんな風に書けば良いのでしょうか?
0947デフォルトの名無しさん
NGNG0948デフォルトの名無しさん
NGNGありがとうございます。ですが、知りたかったのは右側の方で、
max(a,b)が、(((a) > (b)) ? (a) : (b))ならば、
max(max(a,b),c)は、どう書けば良いのでしょうか。
((((a) > (b)) ? (a) : (b)) > (c)) ? (((a) > (b)) ? (a) : (b)) :(c))
になるんでしょうか?
0949デフォルトの名無しさん
NGNG#define max3(x,y,z) (max((x),max(y,z)))
0950デフォルトの名無しさん
NGNGそうか、定義したものをそのまま使えば良かったんですね。
ありがとうございました。
0951デフォルトの名無しさん
NGNG0952デフォルトの名無しさん
NGNG0953デフォルトの名無しさん
NGNGhoge
0954デフォルトの名無しさん
NGNGどーでもいーとき用
barなんてのもあるな
0955デフォルトの名無しさん
NGNGfoo = hoge
bar = fuga
0956デフォルトの名無しさん
NGNGp = "あいうえお";
はOKで
*p = "あいうえお";
がダメなのはわかるんですが、
char *p = "あいうえお";
はなんでOKなんでしょうか?
0957デフォルトの名無しさん
NGNGchar *p;
char型のポインタpを宣言する。
char *p = "あいうえお";
char型のポインタpを宣言し、"あいうえお"で初期化する。
0958デフォルトの名無しさん
NGNG「*」の二義性
0959デフォルトの名無しさん
NGNGとでもしてみるか?
0960デフォルトの名無しさん
NGNGそれだけは勘弁!
0961デフォルトの名無しさん
NGNGchar* p = "あいうえお";
って感じにコーディングする人も多かったりする。
0962デフォルトの名無しさん
NGNG959とかぶっちまったぃ。
0963956
NGNGすいませんさっぱり分かりませんorzと思ったのですが、
>>959で何となく分かりました。
char *p = "あいうえお";というのは
*(p = "あいうえお");と同じことなのかなと。
でも>>961を見るとchar*とかint*という感じで理解したらだめなんでしょうか?
コンパイル時のエラーでvoid *からint *に云々〜なんてのを見たりするので。
0964デフォルトの名無しさん
NGNG>*(p = "あいうえお");と同じことなのかなと。
違う違う違う。
変数の宣言時の * は、ポインタの逆参照の意味は持たない。
0965961
NGNGつまりは>958氏の言っていることなんだけどね・・・
char *pの*は、pの型がcharへのポインタだと言っている訳で、
ポインタの指す実態を表す*とは違うということ。
変数を宣言している場所と、その変数を使用している場所では、
*の意味が違うってことを理解しないといけない。
0966デフォルトの名無しさん
NGNG0967デフォルトの名無しさん
NGNGでコンパイルエラーにならないのは何故だろう(VC++6,0)
const char* な値を char* に代入しようとしてるんじゃないの?
0968956
NGNGそういう理由で>>957>>958の説明になるわけですね。
1週間くらい悩んでたのですっきりしました。本当にありがとうございます。
>>966
すいませんconst調べてきます。
0969デフォルトの名無しさん
NGNG>でも>>961を見るとchar*とかint*という感じで理解したらだめなんでしょうか?
僕のお勧めは
char *p /* 「*p」がcharであるような変数pを定義して… */
= "あいうえお"; /* 初期化 */
と見る方法。
これだと、int (*(*p)(void))[3];のような複雑な宣言もそのまま読める。
但し、普通に出会うのは単純なポインタが圧倒的なので、
char*を一塊としてみるのが悪いわけではない。
>コンパイル時のエラーでvoid *からint *に云々〜なんてのを見たりするので。
型に言及する時は、宣言の構文から名前を省いたものを使う。
>>967
文字列リテラルは特例
0970デフォルトの名無しさん
NGNG負の遺産
0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNG0973デフォルトの名無しさん
NGNG先生〜、まだポインタを理解できてないんで教えてください。
int (*p)(void);
だと int function(void) のような関数名を表すpて意味だと。
(ここの解釈がそもそもコレで合っているのか不安。関数名を格納しているワケではないし。)
int (*(*p)(void))[3];
って 関数へのポインタの配列(要素数 3)p という意味で良いんですか?
0974デフォルトの名無しさん
NGNG関数のアドレスを格納し、関数を指し示すポインタ
0975デフォルトの名無しさん
NGNG>って 関数へのポインタの配列(要素数 3)p という意味で良いんですか?
良くない。
(*(*p)()))[2]がintだと言う意味を良く考えろ。
まずpを間接参照し、呼び出し、間接参照し、要素アクセスしているんだから、
pはポインタで、何を指すかと言うと関数で、何を返すかと言うとポインタで、何を指すかと言うと配列で、要素は何かと言うとint
と読む。
まとめると、intの配列(要素数3)へのポインタを返す関数(無引数)へのポインタ
0978デフォルトの名無しさん
NGNGA func() {
A a;
a.(ry
return a;
}
const A& a = func();
これでfunc::aの寿命が延びるのは保証されてますか?
0979デフォルトの名無しさん
NGNGそれと、保証もなにも、aが有効なのは、関数内のみです。
0980デフォルトの名無しさん
NGNGあと、後のaと区別するためのfunc::aは適切な書き方が思いつかないのでそう書いただけです。
0981デフォルトの名無しさん
NGNGとりあえずコンストラクタ、デストラクタ、コピーコンストラクタに
メッセージ出力させるようなprintf等書いて、どう動作してるか確かめてみ
0982デフォルトの名無しさん
NGNGstaticというものが本に出ていたのですが、”静的に・・”と書いてあるだけで
いまいちよくわかりません。
1.一応理解したと考えているもの
void hoge(){
static a=0;
:
}
上記は関数を抜けても値を忘れない変数と理解しました。
(関数内でしか使用できないグローバル変数みたいなもの?)
2.理解できないもの。下記のbがaとどう違うのか?
int a=0;
static int b=0;
void hoge(){
:
}
3.理解できないもの。関数の前に付くstaticは普通の関数とどう違うのか?
static void hoge(){
:
}
よろしくお願いします。
0983デフォルトの名無しさん
NGNG2のint aはそのソースファイル以外でも使えるグローバル変数。
static int bはそのソースファイル以外からは使えない変数。
3もそのソースファイル以外からは使えない関数となる。
0984デフォルトの名無しさん
NGNGスコープを勉強ちぅですか
まず、記憶クラス指定子を書かないとautoになる事を前もって抑えておきます。
1.
ソースファイル一つを関数一つと考えるとその通りです。
ただ関数内のグローバル変数という時点でグローバルでは無いわけですが
”変数の範囲”としてはそう考えていいでしょう。
2.
外部変数(グローバル変数)になった時だけ、両方の意味が同じになります。
少しの違いといえばintなら0で初期化されるかされないかの違いぐらいで、
staticを使ったからといって通用範囲が狭くなるわけでもありません。
3.
通常で関数はexternで宣言をされている為
前もってプロトタイプを宣言しておけば外部から参照可能ですが、
static関数はそのファイル単体でしか使えません。
0985デフォルトの名無しさん
NGNG3に関しては、
static void hoge(void);
void hoge(void)
{
}
でもファイルスコープになるので要注意。
0986984
NGNG・スコープ、もしくは適用範囲
・外部変数、グローバル変数
などで調べれば色々見つかるでしょう
0987デフォルトの名無しさん
NGNGconst A& a=A(); はヲケ。一時オブジェクトはaがスコープを抜けるまで保持される。
以下はうろ覚え。
const A& a=func(); これだと保持されるのはfuncの戻値のコピーである一時オブジェクト。
0989デフォルトの名無しさん
NGNGexternを同時に勉強しなさい
0990デフォルトの名無しさん
NGNG嘘を教えちゃいかん
0991デフォルトの名無しさん
NGNGchar* p = "あいうえお", q = "かきくけこ";
と書くヤシが出て来そうだ
0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。