スレを勃てるまでもないC/C++の質問はここで 17
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/09/22(水) 09:33:10過去ログ
01 http://pc11.2ch.net/test/read.cgi/tech/1167476845/
02 http://pc11.2ch.net/test/read.cgi/tech/1178503366/
03 http://pc11.2ch.net/test/read.cgi/tech/1187521676/
04 http://pc11.2ch.net/test/read.cgi/tech/1221633708/
05 http://pc11.2ch.net/test/read.cgi/tech/1230516307/
06 http://pc11.2ch.net/test/read.cgi/tech/1231564903/
07 http://pc11.2ch.net/test/read.cgi/tech/1232983248/
08 http://pc12.2ch.net/test/read.cgi/tech/1235921779/
09 http://pc12.2ch.net/test/read.cgi/tech/1240022781/
10 http://pc12.2ch.net/test/read.cgi/tech/1242300936/
11 http://pc12.2ch.net/test/read.cgi/tech/1245059383/
12 http://pc12.2ch.net/test/read.cgi/tech/1248010352/
13 http://pc12.2ch.net/test/read.cgi/tech/1260842197/
14 http://pc12.2ch.net/test/read.cgi/tech/1269273471/
15 http://pc12.2ch.net/test/read.cgi/tech/1273368706/
16 http://hibari.2ch.net/test/read.cgi/tech/1279285647/
0002デフォルトの名無しさん
2010/09/22(水) 09:33:510003デフォルトの名無しさん
2010/09/22(水) 09:58:250004デフォルトの名無しさん
2010/09/22(水) 10:31:12>用途は秀丸エディタのマクロから利用するdllと変換モジュールの作成です
>知識はC#,Actionscript,javascriptです
>やりたい用途はDLL作成です
>用途は秀丸エディタのマクロから利用するdllと変換モジュールの作成です
前スレ988で質問した者です
C#で作成したDLLは呼び出し元のプログラムの間に中継するDLLが必要なため、
DLLのみCかC++で作成したいのですが今からやる分にはどちらがいいのでしょうか?
0005デフォルトの名無しさん
2010/09/22(水) 12:59:11C++
0006デフォルトの名無しさん
2010/09/22(水) 20:43:08ファイルのパスと、ファイルのヘッダー部分だけを取り込んだ情報をvector FileListとしてもち、
ファイル名だけをListBoxに表示しているプログラムで、選択したファイルを上下に入れ替える
処理を書いてみました。
case IDC_BUTTON_UP:{
int i = SendMessage(hList , LB_GETCURSEL , 0 , 0); //リストボックスのカーソルに合わせる
if( i== LB_ERR || i == 0 ) return (INT_PTR)TRUE;
wchar_t file_name_buff[_MAX_PATH]; //リストボックスの入れ替え
SendMessage(hList, LB_GETTEXT, i, (LPARAM)file_name_buff );
SendMessage(hList, LB_DELETESTRING, i, NULL );
SendMessage(hList, LB_INSERTSTRING, i-1, (LPARAM)file_name_buff );
SendMessage(hList, LB_SETCURSEL, i-1, NULL );
std::swap( FileList[i-1], FileList[i]); //vectorのほうの入れ替え
return (INT_PTR)TRUE;
}
リストボックスの表示はうまくいきましたが、動作確認のため
for(i=0;i<FileList.size();,i++){
SendMessage(hDebugList, LB_ADDSTRING , 0 , (LPARAM)FileList[i].FileName.c_str());
}
のように列挙してみても、vector側の順番が変わっていません。
コンパイラからはエラーが出なかったのですがswapの書き方がまずいのでしょうか。
あるいはイテレータを使えば順番が換わっているのでしょうか。
0007デフォルトの名無しさん
2010/09/22(水) 21:21:11http://codepad.org/VZu6F9Sr
vectorの要素がstd::swapで交換できないということはないと思う。
本当にそのFileListは目標としてる操作対象なのかと、
FileListの要素の型がコピーコンストラクタを持っているかを確認してみて。
00086
2010/09/22(水) 21:28:01class FileMemmber {
public:
wchar_t FilePath[_MAX_PATH];
BITMAPFILEHEADER BitFileHeader;
BITMAPV5HEADER BitFileInfo;
};
std::vector<FileMemmber> FileList;
こんな感じです。
コピーコンストラクタなんで作ってないですが、デフォルトであるものだと理解してましたが。
0009デフォルトの名無しさん
2010/09/22(水) 21:32:21他に考えられることは……どのタイミングでhDebugListに向けて列挙してる?
00106
2010/09/22(水) 21:39:13ほか用に作ったボタン押したときに小窓作って表示してます。
case IDC_Horizontal:{//未実装
DialogBox(hInst, MAKEINTRESOURCE(IDD_DEBUGMSG), NULL, debugproc);
return (INT_PTR)TRUE;
}
で、
INT_PTR CALLBACK debugproc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
のWM_INITDIALOG内です。
あと、FileListはグローバルで定義してます。
0011デフォルトの名無しさん
2010/09/22(水) 21:43:100012デフォルトの名無しさん
2010/09/22(水) 21:44:20実はファイルパスをwchar_t[]じゃなくてwstringで持ってるでしょ
>>6のコードでc_str呼んでるじゃん
00136
2010/09/22(水) 21:53:35自分初心者なもんで、コンストラクタとか良く理解できていません。
Shallow Copyとかもはじめて聞いた状態でして、もう少し自分で勉強してみます。
クローンの場合Shallow Copyはできない、とかありましたからそれが原因かもしれません。
ドラッグアンドドロップでファイルを受け取って、ファイルストリームからBitFileHeaderを
read使ってバッファに読み込んでます。
で、ファイルメンバークラスもそこでバッファ用に定義してます。
ファイルリストにはそのバッファを代入しているのですが、それが原因でしょうか。
しかし、
FileList.push_back(file_memmber_buff);
とやってるんですが、別に問題あるように感じないし.....
う〜〜ん。
00156
2010/09/22(水) 22:01:36やっぱり、FileListはwchar_t[]で持ってました。
6でstirngになってるのは、デバグ用にヘッダの内容書き足して表示してるからでした。
orz
0016デフォルトの名無しさん
2010/09/22(水) 22:09:53長いようならcodepad使っても。
00176
2010/09/22(水) 22:24:46http://ux.getuploader.com/tsubok/download/6/BITADD.zip
いろいろ動作確認してみたらほかにも挙動不審なところが見つかりました。
swapはうまくいってないのは確実。ほかにもドラッグアンドドロップされたファイルに
対する処理もうまくいってないのかも。
0018デフォルトの名無しさん
2010/09/22(水) 22:50:15int main()
{
std::vector<FileMemmber> FileList;
FileMemmber fm;
std::swprintf(fm.FilePath, L"111");
FileList.push_back(fm);
std::swprintf(fm.FilePath, L"222");
FileList.push_back(fm);
std::swap(FileList[0], FileList[1]);
for (int i = 0; i < FileList.size(); i++)
std::wprintf(L"%ls\n", FileList[i].FilePath);
}
00196
2010/09/22(水) 22:59:26ListBoxのソートがtrueになってました.....orz
0020デフォルトの名無しさん
2010/09/22(水) 23:01:19くだらない理由で、ほんとスミマセンでした。
0021デフォルトの名無しさん
2010/09/22(水) 23:01:570022デフォルトの名無しさん
2010/09/22(水) 23:31:30main.cppから#includeするファイルが.cppの時と.hの時との違いがわかりません・・・
0023デフォルトの名無しさん
2010/09/22(水) 23:48:460024デフォルトの名無しさん
2010/09/23(木) 00:00:56まさにそのサイトの通りです
ありがとうございました
0025デフォルトの名無しさん
2010/09/23(木) 07:24:100026デフォルトの名無しさん
2010/09/23(木) 09:33:02どうみてもwriteの方が文字数が少なくて早そうに見えますが、実はprintfもそこそこ早く入力できるかと思います。
リダイレクト? はて、早いかどうかと何か関係があるのでしょうか。
0027デフォルトの名無しさん
2010/09/23(木) 11:11:46滅多に使われている事がない気がするんですが
0028デフォルトの名無しさん
2010/09/23(木) 11:23:100029デフォルトの名無しさん
2010/09/23(木) 11:36:480030デフォルトの名無しさん
2010/09/23(木) 12:37:210031デフォルトの名無しさん
2010/09/23(木) 13:05:080032デフォルトの名無しさん
2010/09/23(木) 13:13:290033デフォルトの名無しさん
2010/09/23(木) 16:38:49#include <iostream>
class Test
{
public:
Test() {}
~Test() {}
void output(){ std::cout << "output"; }
};
int main()
{
Test t;
t.output();
return 0;
}
このコードはインライン化されているんですか?
0034デフォルトの名無しさん
2010/09/23(木) 16:51:26実際にインライン展開されるかどうかは結局のところコンパイラの気分次第だが
0035デフォルトの名無しさん
2010/09/23(木) 17:06:03C++でこんな書き方をしている人がいたのですが、
C++をわかっていないC言語ユーザが書いたってことでOKですかね
普通に考えたらstringとかを使うと思うんですが
0036デフォルトの名無しさん
2010/09/23(木) 17:17:56C++だからってstring使わなきゃいけないわけではないし、
C++標準のクラスや関数がみんなstringを受け付けてくれるわけでもないし
const char * を引数に取る関数に渡すんだったら、わざわざstringにするだけ無駄なわけで
0037デフォルトの名無しさん
2010/09/23(木) 18:56:130038デフォルトの名無しさん
2010/09/23(木) 21:12:29switch_(i)_{
____case_1:
______a_=_1;
____case_2:
______a_=_2;
______break;
____case_3:
______a_=_3;
______break;
____case_4:
____case_5:
______a_=_5;
}
上記のコードにたいして
・iが1ならaの値はどうなるか。
・iが4ならaの値はどうなるか。
との問題なのですが、
本に記載されている解答が
iが1のときaは2
iが4のときaは5
となっています。
後者は分かりますが、前者の解答がいまいち(いや、全く。。)理解できません。
iが1のときaは1、だと思うのですが・・
WEB正誤表には記載がありません。
上記の解答が正しいのかどうか
ご教授下さい。
0039デフォルトの名無しさん
2010/09/23(木) 21:26:35a = 1の後にbreakがないからa = 2されるだろ
0040デフォルトの名無しさん
2010/09/23(木) 22:19:49実際組んでみることをせず、頭の中だけで考えてました。
breakに出会わない限り、以下条件を無視して実行していくのですか。
おかげで理解が進みました。
サンクスです。
0041デフォルトの名無しさん
2010/09/23(木) 22:29:330042デフォルトの名無しさん
2010/09/23(木) 23:52:46そうだね
0043デフォルトの名無しさん
2010/09/25(土) 13:51:48「特定時刻 差分 現在時刻 時間カウントが1ループする時刻 の4変数で時差の経過を判定する処理」
を複数ソースファイルで共有したいのですが、
#defineで書く関数ではこういう処理を作る事はできるのでしょうか?
ヘッダーファイルに書ければ共有が楽そうなのですが・・
何か良い関数の共有方法があれば教えて頂けますと幸いです。
0044デフォルトの名無しさん
2010/09/25(土) 14:09:52#define なら普通にヘッダに書けばいい
それでそれぞれのソースに展開されるだろ
0045デフォルトの名無しさん
2010/09/25(土) 19:38:02もちろん、できる。
けど、C++だったら、inline関数の方をおすすめするけどね。
#defineでやるなら、
do { } while(0)
とかを使ってうまくやりなね。
結構とんでもないエラーに悩まされたりするからなw
0046デフォルトの名無しさん
2010/09/25(土) 20:04:34どういう書き方閃けたら人生楽しいんだろうなー
0047デフォルトの名無しさん
2010/09/25(土) 20:05:300049デフォルトの名無しさん
2010/09/25(土) 20:45:58なんで、C++なのにランタイムを入れないとダメなの?
MFCとかかな〜
0050デフォルトの名無しさん
2010/09/25(土) 20:51:03msvcrt.dllとかってのがそれ。
C++にも当然あるw
0051デフォルトの名無しさん
2010/09/25(土) 20:57:178kb -> 700kbぐらいになったな
でもある程度大きいやつなら元が4Mぐらいになるからこれぐらいの増加は別になんでもないのかも
0053デフォルトの名無しさん
2010/09/25(土) 21:05:25だけじゃないけどね。
STLの部分とか標準ライブラリの部分も含まれているはず。
0054デフォルトの名無しさん
2010/09/25(土) 21:07:16005549
2010/09/25(土) 21:15:52stlとかも入っているのか
thx
>>54
jreとかだとライブラリというかフレームワクークじゃないかな
それに、ランタイムって実行環境って言う時もあるから
ランタイム = 仮想マシン/インタプリタってイメージがあるな
0056デフォルトの名無しさん
2010/09/25(土) 21:20:15あれで見てみればいい
0057デフォルトの名無しさん
2010/09/25(土) 21:22:09あれがあれば、
dumpbin /depends xxx.exe
とかで見れたはず。
005843
2010/09/25(土) 23:10:08ご助言ありがとうございます。 defineマクロの置き換えの危険性を、調べて改めて実感し
inline関数について調べてみてそちらで解決しました。感謝。
0059デフォルトの名無しさん
2010/09/25(土) 23:35:14お役に立てたようで何よりw
0060デフォルトの名無しさん
2010/09/26(日) 10:25:440061デフォルトの名無しさん
2010/09/26(日) 11:15:090062デフォルトの名無しさん
2010/09/26(日) 18:32:08インターフェース境界だけルール守るってしたほうが生産性ググッと上がるよね
0063デフォルトの名無しさん
2010/09/26(日) 19:32:45cppにも#include<string>って書きますか
また、フレームワークを使っていると暗黙的にヘッダが#includeされますが
それについても明示的に#includeしているか教えてください
0064デフォルトの名無しさん
2010/09/26(日) 20:19:58意味ありません
インクルードガードで2回目以降はスキップされます
フレームワークについては中を良く見て見ないとわからない
0066デフォルトの名無しさん
2010/09/27(月) 16:37:55int a = 1024; を
byte b[50]; の b[7] に入れたいのですが、
memcpy(&b[7], &a, 4); とやって値を移そうとする事は正しいのでしょうか?
また、その結果を確認しようとして
int c = (int)&b[7];
としてみたら全く違う値になっていました・・。 どっちで値が壊れてしまっているのでしょうか?
どう受け渡せば上手く行くのでしょうか・・orz
0067デフォルトの名無しさん
2010/09/27(月) 16:40:45006866
2010/09/27(月) 17:42:28よく中身を見たら、memcpyは7に最下1バイト 8 9 10と逆順に入るんですね。
それを直で移すからバイトを逆順に辿るから変な値になる・・と。
データが逆バイト順にならない方法はないか調べてみようかと思います。ありがとうございました。
0069デフォルトの名無しさん
2010/09/27(月) 18:21:09リトルエンディアンとか知らないのかこの馬鹿は
007066
2010/09/27(月) 18:26:280071デフォルトの名無しさん
2010/09/27(月) 18:44:08でも余計混乱するだけかもしれない
0072デフォルトの名無しさん
2010/09/27(月) 20:55:06double root(double a)
{
double p1, p2, p3;
p1 = a;
p2 = (p1 + a / p1) / 2;
(p1 - p2 > 0) ? p3 = p1 - p2 : p3 = p2 - p1;
if (p2 < 0) p2 = -p2;
if (p3 <= 1.0 * 10e-10) return p2;
return root(p2);
}
int main(void)
{
double x;
scanf("%lf", &x);
printf("%f", root(x));
return 0;
}
1>sample.c(8): error C2106: '=' : 左のオペランドが、左辺値になっていません。
コレはどういう意味でしょうか
0073デフォルトの名無しさん
2010/09/27(月) 20:57:380074デフォルトの名無しさん
2010/09/27(月) 20:59:10もう少しぃ分かりやすく
0075デフォルトの名無しさん
2010/09/27(月) 21:01:400076デフォルトの名無しさん
2010/09/27(月) 21:16:38(p1 - p2 > 0) ? p3 = p1 - p2 : p3
=
p2 - p1;
こう書けばわかるだろうか?
あなたは p2 - p1 を (p1 - p2 > 0) ? p3 = p1 - p2 : p3 に代入しようとしているんだ
演算子の優先順位を調べてみるといい
0077デフォルトの名無しさん
2010/09/27(月) 21:38:090078デフォルトの名無しさん
2010/09/28(火) 00:44:040079デフォルトの名無しさん
2010/09/28(火) 00:47:28って、書いてて思ったんだけど、p1 = aの意味が判らん。
0080デフォルトの名無しさん
2010/09/30(木) 21:28:58{
int & r;
Ref(int & r_) : r(r_) {}
};
void F(Ref const &ref)
{
ref.r += ref.r;
}
これコンパイルは通るんですけど合法なんですか?
constなRefのメンバだからrもconstなんじゃないの?って思うんですけど…
0081デフォルトの名無しさん
2010/09/30(木) 23:46:04constになるのはRefそのものだけ
0082デフォルトの名無しさん
2010/10/01(金) 17:11:57と
int bar[10]
の中身が全て同一であることを確かめるのってどうやればいい?
for文で回す・直に全部書く以外で
0083デフォルトの名無しさん
2010/10/01(金) 17:13:23memcmpすれば?
0084デフォルトの名無しさん
2010/10/01(金) 17:24:360085デフォルトの名無しさん
2010/10/01(金) 17:26:14なんで変なことしたがるかな
0086デフォルトの名無しさん
2010/10/01(金) 17:28:100087デフォルトの名無しさん
2010/10/01(金) 17:30:420088デフォルトの名無しさん
2010/10/01(金) 18:06:42{
float x, y, z;
};
Vec v1, v2;
v1 = v2; // A
memcpy(&v1, &v2, sizeof(Vec)); // B
ぶっちゃけどっちが速いんですか?
0089デフォルトの名無しさん
2010/10/01(金) 18:11:440090デフォルトの名無しさん
2010/10/01(金) 18:14:58ソース http://codepad.org/MjnqmZj1
コンパイルした結果 http://codepad.org/aiF28QbV
同じじゃね?
0091デフォルトの名無しさん
2010/10/01(金) 19:49:21構造体の代入にmemcpy()使うなよ。
何日かまえに、どっかのスレで「memcpy()は構造体の代入の関数版」とか
教えてるやつ見たけど、構造体の代入にmemcpy()使うやつはアホだろ。
0092デフォルトの名無しさん
2010/10/01(金) 21:36:170093デフォルトの名無しさん
2010/10/01(金) 21:55:53Cならおんなじでしょ
0094デフォルトの名無しさん
2010/10/01(金) 22:04:010095デフォルトの名無しさん
2010/10/01(金) 22:05:20ダメなのはメモリブロックの比較だ
0096デフォルトの名無しさん
2010/10/01(金) 22:05:450097デフォルトの名無しさん
2010/10/01(金) 22:15:030098デフォルトの名無しさん
2010/10/01(金) 22:15:480099デフォルトの名無しさん
2010/10/01(金) 22:17:030100デフォルトの名無しさん
2010/10/01(金) 22:28:21intの変数とかmemcpy()で代入してたらおかしいと思うだろ?
0101デフォルトの名無しさん
2010/10/01(金) 23:28:19いまさらそんな心配するかね。
0102デフォルトの名無しさん
2010/10/01(金) 23:36:570103デフォルトの名無しさん
2010/10/01(金) 23:43:170104デフォルトの名無しさん
2010/10/01(金) 23:49:200105デフォルトの名無しさん
2010/10/02(土) 00:42:45ないでつか?
0106デフォルトの名無しさん
2010/10/02(土) 00:46:440107デフォルトの名無しさん
2010/10/02(土) 01:12:550108デフォルトの名無しさん
2010/10/02(土) 08:35:38出来ない気がするんですが旨い方法ありまつか?
const functbl[]={
{(void*)&Class1::func1,0,0},
{(void*)&Class2::func2,0,0},
、、、
};
g++ でこんなテーブルに並べたいのですが・・
0109デフォルトの名無しさん
2010/10/02(土) 08:47:42それ、publicならうまくいくのか?
メンバー関数へのポインタをvoid*にキャストしても動かないだろ。
0110デフォルトの名無しさん
2010/10/02(土) 09:01:47class Class1 {
friend class Z;
private:
static void func1();
};
class Class2 {
friend class Z;
private:
static void func2();
};
struct Z {
void (*pf)();
int a;
int b;
static const Z functbl[];
};
const Z Z::functbl[] = {
{ Class1::func1, 0, 0 },
{ Class2::func2, 0, 0 },
};
0111デフォルトの名無しさん
2010/10/02(土) 15:17:27>>110 うおおおおおすげぇぇぇぇ
ありがとうございますorz
0112デフォルトの名無しさん
2010/10/02(土) 15:17:56public:
void func1() { }
};
class Class2 {
public:
void func2() { }
};
class X {};
template<class T>
class Y : public X {
public:
T f;
Y(const T & p) {f = p;} };
int main()
{
Y<void (Class1::*)()> a(&Class1::func1);
Y<void (Class2::*)()> b(&Class2::func2);
X *array[2] = {&a, &b};
}
ってしてみるとか
冗談だけど
っていうかやるならBoost.Any使えばいいんだけど
0113デフォルトの名無しさん
2010/10/02(土) 15:18:390114デフォルトの名無しさん
2010/10/03(日) 22:05:23CreateProcessだとWindows上でしか動かないと思うので
マルチプラットフォームで動作するCreateProcessみたいなのがあればいいんですが
0115デフォルトの名無しさん
2010/10/03(日) 22:23:45あの…その…えっと…
0116デフォルトの名無しさん
2010/10/03(日) 22:25:59#if defined _WIN32
CreateProcess()
#elif defined __GNUC__
execvp()
#else
#endif
0117デフォルトの名無しさん
2010/10/03(日) 22:28:00ttp://www11.plala.or.jp/studyhall/cpp/system.html
0118デフォルトの名無しさん
2010/10/03(日) 22:29:16. ==| ^o^ | <これは しょうゆです
.  ̄|\_._/|
| |
. | |
\_/
0119114
2010/10/03(日) 22:50:13ありがとうございました
0120デフォルトの名無しさん
2010/10/04(月) 06:13:52RAIIはどう発音するのでしょうか?
0121デフォルトの名無しさん
2010/10/04(月) 08:18:340122デフォルトの名無しさん
2010/10/04(月) 12:51:48double *array;
array = (double *)malloc(sizeof(double)*n);
といった感じで作った配列の要素数を調べることはできないでしょうか?
通常の配列における
double array[10];
yousosuu = sizeof(array) / sizeof(array[0]);
といった操作をしたいのです。
環境はVC Express 2010を使っています。
0123デフォルトの名無しさん
2010/10/04(月) 13:07:09どこか別の変数に覚えておいてください
0124デフォルトの名無しさん
2010/10/04(月) 14:20:17HeapAllocで確保するようにして, HeapSize使うとか?
決しておすすめはしないが
0125デフォルトの名無しさん
2010/10/04(月) 14:41:070126デフォルトの名無しさん
2010/10/04(月) 15:21:540127デフォルトの名無しさん
2010/10/04(月) 15:44:530128108
2010/10/04(月) 23:52:52他クラスファイルのクラスのプライベートメンバ関数をテーブルに並べてアドレスを獲るために↓のように
ヘッダとソースに分割したらエラーになってしまいました・・・どうすべorz
//----------------
<class1.cpp>
#include "mytbl.h"
class Class1 {
friend class Z;
private:
static void func1();
};
//-----------------
<mytbl.h>
struct Z {
void (*pf)();
int a;
int b;
static const Z functbl[];
};
//-------------------
<mytbl.cpp>
#include "mytbl.h"
const Z Z::functbl[] = { ←Z の名前がなんちゃら、、、のエラーorz
{ Class1::func1, 0, 0 },
{ Class2::func2, 0, 0 },
};
0129デフォルトの名無しさん
2010/10/05(火) 00:02:31list<void(*)(void)> FuncPtrRegister;
class Hoge
{
private:
static void Func(void) {}
public:
static void Register(void) { FuncPtrRegister.push_back(Func); }
};
0130デフォルトの名無しさん
2010/10/05(火) 19:15:26他の多くの言語では暗黙にガベージコレクトの対象となるが、
C++では明示的にdeleteしなくてはいけないところを、
自動的にdeleteしてくれるようにしたものがスマートポインタである。
という解釈で正しいでしょうか……?
0131デフォルトの名無しさん
2010/10/05(火) 19:17:210132デフォルトの名無しさん
2010/10/05(火) 19:48:13正しいよ。
ただし、わかってると思うけど
「スマートポインタ」って言っても、実装は1種類じゃないことに注意してね。
0133デフォルトの名無しさん
2010/10/05(火) 20:17:060134130
2010/10/05(火) 22:24:55確認していただけて安心しました。
0135デフォルトの名無しさん
2010/10/05(火) 23:24:53普通に配列として宣言して使う奇特な(半ば狂った)配列クラスとかあるんれすか?
0136デフォルトの名無しさん
2010/10/05(火) 23:34:280137デフォルトの名無しさん
2010/10/05(火) 23:56:03処理が特に必要のない単純なデータクラスであっても
やはり仮想デストラクタを定義しておく必要はあるのでしょうか
あるとしたらその理由を教えていただければ
0138デフォルトの名無しさん
2010/10/06(水) 00:02:340139デフォルトの名無しさん
2010/10/06(水) 00:11:57無駄なオーバーヘッドだからね
0140デフォルトの名無しさん
2010/10/06(水) 00:19:18class A{
} ;
class B : public A{
~B() ;
} ;
A *p = new B() ;
delete(p) ; // ←だとB::~Bは呼ばれない
class A{
virtual ~A()
} ;
としておけば親クラスのポインタから削除しても継承先のデストラクタが呼ばれる
0141デフォルトの名無しさん
2010/10/06(水) 00:36:05>>138
確かにそうなんですがC関数用の構造体を拡張する場合など少し疑問に思いまして
つまりそんな場合はそもそもデストラクタが必要となるような機能をつけるなということですね
>>139
オーバーヘッドも結構気になりますね
結構高速なループ中で使う予定なので
>>139-140
つまり継承し、かつデストラクタなしのクラスは
とりあえず通常の構造体的な使用にとどめておくべきということでいいでしょうか
なかなか全容が把握できずすみません
0142デフォルトの名無しさん
2010/10/06(水) 01:04:26virtualを付けないのが基本でvirtualを付けるのはそういう特殊なケースだけということを忘れちゃいけない
0143デフォルトの名無しさん
2010/10/06(水) 01:08:51データクラスとか構造的使い方とか関係ない
要は継承先のクラスの型をそのまま使うだけならなんの問題ない
class A{
public:
virtual void func()= 0 ;
} ;
class B : public A{
public:
~B(){}
void func(){}
} ;
class C : public A{
public:
~C(){}
void func(){}
} ;
B* b = new B() ;
C* c = new C() ;
b->func() ;
c->func() ;
delete b;
delete c ;// ↑子クラスをそのまま扱うだけなら問題ない
//↓例えば型の違う子クラスを親クラスのポインタ経由に一括に処理したいときなどに問題がおきる
A* a[2] = { new B(), new C() } ;
for ( int i = 0 ; i < 2 ; i++ ){
a[i]->func() ;
delete a[i] ;// ←継承先のデストラクタが呼ばれない
}
0144デフォルトの名無しさん
2010/10/06(水) 01:21:10ただなんとなく使ってる人だと「え?そんなことする必要あるの?」って感じだろうし
0145デフォルトの名無しさん
2010/10/06(水) 01:29:560146デフォルトの名無しさん
2010/10/06(水) 03:27:120147デフォルトの名無しさん
2010/10/06(水) 03:50:04コレは良いとして
>使っても仮想化しない。
これは違うだろ
仮想化しないことがマズいんだから
0148デフォルトの名無しさん
2010/10/06(水) 03:54:02よく解かってないないなら黙ってればいいのに
0149デフォルトの名無しさん
2010/10/06(水) 07:41:14それはそれでshared_ptrがなんでそうなるか理解して無いと罠にはまりそうだが
0150デフォルトの名無しさん
2010/10/06(水) 09:02:03仮想化するひつようがないところではするべきではない
0151デフォルトの名無しさん
2010/10/06(水) 09:07:12template<typename T>
void Func(T arg)
{
}
だと
Func<int>(10);
というのが見つかったら、
コンパイラが、
void Func(int arg)
{
}
という関数を仮想的に自動生成してコンパイルしている、という解釈でしょうか?
0152デフォルトの名無しさん
2010/10/06(水) 10:49:430153デフォルトの名無しさん
2010/10/06(水) 18:54:51いままでデフォルトコンストラクタは通常のコンストラクタと同じような クラス名(){} みたいな関数だと思っていました
しかし次のA、Bの処理を行ったところ、所要時間に大きな差が見られました
class X1{ /*何も無し*/ }; for( UINT i = 0; i < 100000000; ++i ) X1(); // 処理A
class X2{ public: X2(){} }; for( UINT i = 0; i < 100000000; ++i ) X2(); // 処理B
もしかしてデフォルトコンストラクタが上記のような関数というのは大きな勘違いですか?
0154デフォルトの名無しさん
2010/10/06(水) 19:26:590155デフォルトの名無しさん
2010/10/06(水) 19:58:07処理なしforループとABforループ10回の平均をとったら次のようになりました
for単体時間≒330[ms]前後
A処理時間≒330[ms]前後 実質処理時間≒0[ms]
B処理時間≒3450±150[ms] 実質処理時間≒3000[ms]強
一回のBループ処理では約0.03[um]となりますが積み重なると大きな差になりました
0156デフォルトの名無しさん
2010/10/06(水) 20:01:090157デフォルトの名無しさん
2010/10/06(水) 20:25:48でもそのケースはただ単に最適化してないだけじゃないか
0158デフォルトの名無しさん
2010/10/06(水) 20:30:10分けてやってみましたが傾向は特に変わらないようです
そして最適化は無効にしてあり(等価な最適化負荷方法がわからない)
そのまま最適化有効時の話にはできないんですが
有効だったとしても少なくともAよりBが速くなることはまずありえないですよね
0159デフォルトの名無しさん
2010/10/06(水) 21:09:39・・・もしかして最適化すると無意味なコンストラクタは完璧に削除される、
というか一部を抜き出して処理時間を論じることはもはや無意味になるんでしょうか
自分は単純に最適化で実行速度などの全体的なスケールが縮小される
→一部要素であっても最低限比較時の傾向(比較的早いとか遅いとか)は保持されると思いこんでいました
しかしそれだと一部処理の最適化時の負荷評価はいったいどうしよう
0160デフォルトの名無しさん
2010/10/06(水) 21:11:580161デフォルトの名無しさん
2010/10/06(水) 21:58:32よかったです
ありがとうございます
0162デフォルトの名無しさん
2010/10/06(水) 22:01:26それなら実行ファイルにデバッグ用の「現在の行位置」を埋め込まなくてはいけなくなるX2の方が遅くなりそうな気がする。
つーか最適化切った状態で比較してもなぁ……
あとさっきから言ってる一時処理の最適化時の負荷評価という意味が全く分からん
一時処理ってなんだ
0163デフォルトの名無しさん
2010/10/06(水) 23:09:490164デフォルトの名無しさん
2010/10/07(木) 00:00:20オーバーヘッドの違いはどうなるんですか?
0165デフォルトの名無しさん
2010/10/07(木) 00:11:25自分でコンストラクタを書く以上は、それが空であったとしても、コールをするだろうし、
それを取り除けるのは最適化処理、
ということではないかな?
(ちなみにコールってのは結構負荷あるぞ)
試しに最適化を入れて測ってみなよ。
ほぼ同じになるかもよ?
0166デフォルトの名無しさん
2010/10/07(木) 01:58:48>>153のようにしたら(最適化無効であろうと)デフォルトコンストラクタがあるはずの処理Aが
実際には比較にならないほど速く終わったその理由を伺っているわけですから
>>160
試しに両方にデストラクタや代入演算子を追加しても違いは埋まりませんでした
興味深いことに両方に仮想関数を追加したら処理時間は同じになりました
他クラスで無駄にvirtualしていたのを除去したら少なくとも同じテストでは大幅に速くなりました、ありがとうございます
>>165
残念ながら最適化してまともに試験できる方法を知らないです(無意味なfor処理はすっ飛ばされるので)
しかし自分としても仰っているように(ただし最適化に関わらず)デフォルトコンストラクタ(やその負荷)は
上述したような例外を除いて基本的にはそもそも影も形も存在しなかったんではないかと考えています
0167デフォルトの名無しさん
2010/10/07(木) 02:18:56最適化がかかると、処理に関係しない部分は全く存在しない処理としてすっ飛ばされるので関係有る
0168デフォルトの名無しさん
2010/10/07(木) 04:51:56後付で質問を修正することになり大変申し訳ないのですが
「少なくとも最適化無効時に、仮想関数を持たないクラスが、
コンストラクタの明示によってインスタンス化所要時間が大幅に変わる、
その明示的な理由はなんでしょうか?」
でも探してたらそれらしいの見つけた
http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=15
どうやらデフォルトコンストラクタは確かに存在するけど
そもそもそれが生成されないようなクラスもあるのか
0169デフォルトの名無しさん
2010/10/07(木) 07:17:48最適化を無効にするってことが如何に意味がないか判ってないな。
そもそも何のために所要時間を知りたいの?
わざわざ遅くしたいだけなら無意味にウェイトすればいいだけだし、
速くしたいのなら最適化するのが当然だし。
0170デフォルトの名無しさん
2010/10/07(木) 08:26:100171デフォルトの名無しさん
2010/10/07(木) 08:31:43コンパイラが暗黙のコンストラクタなんて価値のないものを呼び出す義理はねぇ
0172デフォルトの名無しさん
2010/10/07(木) 16:20:06ループカウンタにvolatileつけるとなくならないかもしれない。
ためしてないからうまくいくかわからないけど
0173デフォルトの名無しさん
2010/10/07(木) 16:30:42テストする順番を入れ替えたりするだけでも全然結果が違うことはあるよ
多分これは最適化の問題じゃないと思う
自分はよくわからない分野だけどキャッシュメモリとかハードのほうでなんか色々あるんだと思う
0174デフォルトの名無しさん
2010/10/07(木) 16:30:55作っていて、BCD構造体という使いたいのですが、
BCDという識別子が認識されません。
これを使うにはどうしたらいいのでしょうか?
作成中のプログラムはwin32コンソールアプリケーションで
すべてC言語で書いています。
<stdio.h>、<stdlib.h>、<windows.h>をインクルードしています。
windowsでのプログラミングは初めてなんで見当違いな聞き方かもしれない
ですけどよろしくお願いします。
0175デフォルトの名無しさん
2010/10/07(木) 16:35:25って感じの事が書かれてた気がする。
それが真実なら、先のクラスAはメンバがないし継承もしてないのでデフォルトコンストラクタ不要と判断され、自動生成されなかったのではないか
なければ当然コールされる事もないので、実行時に行われるのはスタックポインタの変更くらいだろうので高速
対してクラスBにはデフォルトコンストラクタがあり、最適化offの場合インライン展開もされずコールされる
関数コールは結構遅いので、それが差になったのではないだろうか
最適化onの場合は今回の場合恐らくインライン展開され、もともと中身がないので何も行われないので、クラスAとほとんど同じ速さになるのではないだろうか
0176デフォルトの名無しさん
2010/10/07(木) 16:39:480177デフォルトの名無しさん
2010/10/07(木) 16:47:43マルチすんな糞が
0178デフォルトの名無しさん
2010/10/07(木) 16:48:430179デフォルトの名無しさん
2010/10/07(木) 16:50:050180デフォルトの名無しさん
2010/10/08(金) 08:13:26BCDという構造体が必要なら、自分で定義してください。
Windouws APIにもC++の規約にも、.NET APIにもBCDなんて構造体はないですよ。
二進化十進変数が使いたいと言う事なら、C++の規約には無いので適当なライブラリを探してください。
C++ CLR使って良いなら、System.Decimalが二進化十進変数ですよ。
二進化十進変数の実装は言語依存なので、普通は通信にそのまま使うことはないですよ。
0181デフォルトの名無しさん
2010/10/08(金) 12:06:23マルチしなけりゃ教えてやったんだけどな。残念だったな。
0182デフォルトの名無しさん
2010/10/08(金) 14:55:43このようなコードを書きました。
ttp://codepad.org/tEn3q3lO
引数を double array[][cols] のようにする方法もありますが、
N をグローバル変数もしくは define しなくてはならず
これが自分としては嫌だったので、double** array のようにしました。
これはうまく行かないのでしょうか?
1次元配列であればうまく行きましたが・・・。
0183デフォルトの名無しさん
2010/10/08(金) 15:28:48void func( double *aray, const int rows, const int cols )
{
int r=0;
for( r=0; r<rows; ++r ){
int c=0;
for( c=0; c<cols; ++c ){
aray[r*cols+c] = (r+1)*10 + (c+1);
}
}
}
func( aray[0], rows, cols );
0184デフォルトの名無しさん
2010/10/08(金) 17:57:51なんで次元問わずarrayで先頭のアドレスを返す仕様にしなかったんだか
0185デフォルトの名無しさん
2010/10/08(金) 18:10:05*arrayでもいいけど
0186デフォルトの名無しさん
2010/10/08(金) 18:28:47void func(int *p, size_t m, size_t n);
template <size_t M, size_t N> inline void func(int (&array)[M][N])
{
func(static_cast<T*>(array), M, N);
}
0187デフォルトの名無しさん
2010/10/08(金) 18:39:190188デフォルトの名無しさん
2010/10/08(金) 18:40:380189デフォルトの名無しさん
2010/10/08(金) 18:49:36>C/C++の質問はここで
>C/C++の質問はここで
>C/C++の質問はここで
0190デフォルトの名無しさん
2010/10/08(金) 18:53:220191デフォルトの名無しさん
2010/10/08(金) 18:57:21あのーー、キャストって分らないんですが
>func(static_cast<T*>(array), M, N);
の場合はstatic_castが正しいのですか?reinterpretじゃ駄目なんですか?
で、その理由はなんなんですか?
0192デフォルトの名無しさん
2010/10/08(金) 20:17:17reinterpret_castは値だけそのままで無理やりキャストしたい時に使うキャスト
reinterpret_castは取り扱い資格を持ったよく解ってる人がそれが正解と確信しているときにだけ使っていい
そうでない場合は最悪の場合死人が出るので法律で使用が禁じられている
だからここはstatic_castが正解
0193デフォルトの名無しさん
2010/10/08(金) 20:51:02ところでこれって配列のサイズが自動で取得できる以外になんか利点ある?
まあそれが結構デカイんだけど
0194デフォルトの名無しさん
2010/10/08(金) 21:10:41サイズがコンパイル時定数だからループとかを最適化しやすい
0195デフォルトの名無しさん
2010/10/08(金) 22:15:22<T*>はtemplate引数にないんですけど、こうしないと駄目なの?
こうしないと
void func(int *p, size_t m, size_t n); を呼んでくれないの?
0196デフォルトの名無しさん
2010/10/08(金) 22:16:230197デフォルトの名無しさん
2010/10/09(土) 02:14:50reinterpret_castは怠慢。
dynamic_castは自殺願望あるいは設計の敗北。
0198デフォルトの名無しさん
2010/10/09(土) 02:18:080199デフォルトの名無しさん
2010/10/09(土) 02:19:120200デフォルトの名無しさん
2010/10/09(土) 02:20:190201デフォルトの名無しさん
2010/10/09(土) 13:11:550202デフォルトの名無しさん
2010/10/09(土) 13:18:21その識別子の定義が、そのコンパイル単位の外部にある、ということを宣言する
0203デフォルトの名無しさん
2010/10/09(土) 13:28:220204デフォルトの名無しさん
2010/10/09(土) 13:30:130205デフォルトの名無しさん
2010/10/09(土) 13:33:23大抵のCコンパイラについては、externで宣言する必要はない。
普通に関数宣言があればいい。
Cでは識別子は完全に一意になるので、あとはリンカがつき合わせてくれる。
で、C++では、
extern "C" int hoge( void );
みたいな書き方が使われる。
これは、C++で書かれているhogeという関数を、Cのプログラムから呼び出したい
ときに必要になる。
0206デフォルトの名無しさん
2010/10/09(土) 13:36:230207デフォルトの名無しさん
2010/10/09(土) 13:37:04staticを使ったのは間違いだった
これじゃ意味がハッキリしないし
0208デフォルトの名無しさん
2010/10/09(土) 13:38:46>>206
>>204
なんで言ってることがバラバラなんだよw
0209デフォルトの名無しさん
2010/10/09(土) 13:39:360211デフォルトの名無しさん
2010/10/09(土) 13:45:12extern Type gFoo;
より
struct Foo
{
static Type variable;
};
Type Foo::variable;
のほうがクールだよね
0212デフォルトの名無しさん
2010/10/09(土) 13:46:370213デフォルトの名無しさん
2010/10/09(土) 13:52:36http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.2.4.html
↑こういうテクニックとかあるけど、そっちのほうがいいな。
0214デフォルトの名無しさん
2010/10/09(土) 13:53:20やり方おしえてください
0215デフォルトの名無しさん
2010/10/09(土) 13:54:41{
static int value;
};
template <class T> int Foo_<T>::value;
struct Foo : Foo_<void>
{
};
int main(void)
{
Foo::value = 100; cout << Foo::value << endl; return 0;
}
ヘッダだけで書けるから便利
0216デフォルトの名無しさん
2010/10/09(土) 14:02:11std::mapを使え
0217デフォルトの名無しさん
2010/10/09(土) 18:46:590218デフォルトの名無しさん
2010/10/09(土) 19:21:48RadStudio7.0にてStlportのコンパイルは出来るのでしょうか?
アプリケーションをダウンロードしたのですが「Stlport5.2.dllがありません」
とのエラーが出てdllを検索してみたのですが出てくる情報がどれもコンパイルする方法でした。
なのでソースをダウンロードしてみたのですがConfigureをみるとmsvcかIntel C++コンパイラでしか出来ないようでした。
HDDの容量の関係もあり、もともとインストールされているRadStudioでやりたいのですが・・・
長文になってしまいましたがどなたかご教示いただけると幸いです。
0219デフォルトの名無しさん
2010/10/09(土) 19:25:030220デフォルトの名無しさん
2010/10/09(土) 20:06:270221デフォルトの名無しさん
2010/10/09(土) 20:44:490222デフォルトの名無しさん
2010/10/09(土) 20:58:40コンパイラベンダが独自に定義しているマクロを見て条件ディレクティブで分岐コンパイルしてる
0224デフォルトの名無しさん
2010/10/10(日) 13:43:15なに、そのクソページ。管理できなくなるほどのグローバル変数を使用しない事が最優先。
http://www.pro.or.jp/~fuji/mybooks/cdiag/appendix.b.html
> プログラミング言語の本は、コンピュータ関連の本の中では寿命の長い方 ですが、
> それでも出版されてから5年程度が寿命です。いつ出版された本かは 必ず確認して買いましょう。
墓場行きのクソページいつまでも公開してるのは、自論と矛盾してるな。
0225デフォルトの名無しさん
2010/10/10(日) 13:47:470226デフォルトの名無しさん
2010/10/10(日) 13:55:120227デフォルトの名無しさん
2010/10/11(月) 00:16:000228デフォルトの名無しさん
2010/10/11(月) 00:18:34デクルスペック
0229デフォルトの名無しさん
2010/10/13(水) 22:58:57どっちを使っているソフトウェアが多いんですか?
0230デフォルトの名無しさん
2010/10/13(水) 23:03:200231デフォルトの名無しさん
2010/10/15(金) 05:54:250232デフォルトの名無しさん
2010/10/15(金) 10:45:000233デフォルトの名無しさん
2010/10/15(金) 12:02:580234デフォルトの名無しさん
2010/10/15(金) 14:33:46その部分がソートされている必要さえないなら更に高速なnth_element()を使うこともできます。
0235デフォルトの名無しさん
2010/10/15(金) 16:21:02VC++2010Expでビットマップの編集ソフトを作ろうと考えています。
ファイルから読み込んだものを、ほかのDIBにコピーしたいのですが、
下記のようにプログラムしてもうまくいきませんでした。
UINT adjust4multiples(int i){
return (UINT)((i+3)/4)*4;
}
として、
HBITMAP from_file = (HBITMAP)LoadImage(NULL,FilePath,IMAGE_BITMAP,x,y, LR_CREATEDIBSECTION | LR_LOADFROMFILE );
DIBSECTION dibsection_info;
GetObjectW(from_file, sizeof(DIBSECTION), (LPVOID)&dibsection_info );
for(int i=1; i<=y; i++){
int iymem = (y - i) * adjust4multiples(Width*3);
int iyfile = (y - i) * adjust4multiples(x*3)
CopyMemory(memBITMAP+iymem, dibsection_info.dsBm.bmBits+iyfile, x*3);
}
memBITMAPはあらかじめDIB用にメモリ確保してあり、問題ないのですが、bmBitsを使ってコピー元を表そうとしても、
コンパイラから、明確なオブジェクトをさすポインタでない、あるいはサイズが不明などといわれ、コンパイルできません。
CreateDIBsectionで作られたものであれば、ピクセルへのポインタがあらかじめ手に入るのですが、LoadImageの場合は
どうすればいいのでしょうか。
手直しすればこの方法で問題ないのか、そもそもLoadImageをつかって楽をしようとしたのが間違いなのか。
よろしくお願いします。
0236デフォルトの名無しさん
2010/10/15(金) 18:16:150237235
2010/10/15(金) 19:11:17移動します。
0238デフォルトの名無しさん
2010/10/15(金) 19:44:12あり^^
0239デフォルトの名無しさん
2010/10/15(金) 22:15:49ユーザーの入力を待ちたいのですが、コンソールアプリケーションではないためcinを使うことが出来ません。
0240デフォルトの名無しさん
2010/10/15(金) 22:17:380241デフォルトの名無しさん
2010/10/15(金) 22:26:35void func( a, b )
int a;
int b;
{
・・・
}
のような記述がCで成されていたのですが、
void func( int a, int b )
としていないのはなぜでしょうか?
また、これはC++では許されないようですが、
単純に 仕様 ということでしょうか?
0242デフォルトの名無しさん
2010/10/15(金) 22:28:540243デフォルトの名無しさん
2010/10/15(金) 22:44:50「Rubyを作ってた当初はK&Rしか解釈できないコンパイラがまだ残っていたのと、
私がANSIスタイルの引数括弧の長さが嫌いだというのが理由です。 」
ttp://www.rubyist.net/~matz/20050709.html
仕様はどうか知らないがM$はこう言っている
「情報: 古い (K & R) のスタイルの宣言は C++ ではサポートされていません。」
http://support.microsoft.com/kb/79845/ja
0244デフォルトの名無しさん
2010/10/15(金) 22:47:48こっちの方が美しいのに
0245デフォルトの名無しさん
2010/10/15(金) 22:52:000246241
2010/10/15(金) 23:27:09ありがとうございます。
K&Rスタイルなんですね。
全く知りませんでした。
私としては、今風(?)の書き方の方が、関数の宣言見たときに、
変数とその型がセットであるから見やすいと思ってしまいますが・・・。
0247デフォルトの名無しさん
2010/10/15(金) 23:45:130248デフォルトの名無しさん
2010/10/15(金) 23:48:16さっさとプチ整形しろよ
0249デフォルトの名無しさん
2010/10/15(金) 23:58:19簡単に作る方法は?
いままでスタティックライブリ作っていたので
__declspec(dllexport)やdef定義作るの面倒です
環境:VS2008
0250デフォルトの名無しさん
2010/10/16(土) 00:01:210251デフォルトの名無しさん
2010/10/16(土) 00:09:18C++のスタティッククラスのコンストラクタに処理を書けば
何よりも早く呼ばれるからそこでLib全体の監視起動しろごるあ
ついでに終了処理をデストラクタに書けば
Libが存在する間ずっと動く処理が書けるだろ?簡単だろ?ごるあ
と言われたのですが、
そんなことできるんでしょうか?・・・orz
0252デフォルトの名無しさん
2010/10/16(土) 00:13:040253デフォルトの名無しさん
2010/10/16(土) 01:29:110254デフォルトの名無しさん
2010/10/16(土) 07:56:18スタティック(静的)クラスなるものはC++にはない。Managed C++にはある。
0255デフォルトの名無しさん
2010/10/16(土) 08:17:00カッコいいか? 少なくともやってる事はダサダサだぞ。
0256デフォルトの名無しさん
2010/10/16(土) 08:18:380257デフォルトの名無しさん
2010/10/16(土) 08:31:11その時のクラスってのはいわゆるclassやstructのことじゃなくて、autoやstaticとかの話
普通のstatic変数の初期化はプログラムで最初に実行されるけど
クラスとかは最初に制御が移った時点で初期化される
なので、宣言と同時に定義もしてしまうこういうやり方で出来るってことじゃないかな
static class A{public: A(){printf("hoge");}} a;
0258デフォルトの名無しさん
2010/10/16(土) 08:35:01レスした後で気づくとか
0259デフォルトの名無しさん
2010/10/16(土) 13:24:04C++の静的クラスなるものは全メンバがstaticなクラスのことで
静的クラスはコンストラクタデストラクタを持てない
→ >>251 はGCCでは不可能
でOKでつか??
0260デフォルトの名無しさん
2010/10/16(土) 13:31:38スタティッククラスってのは存在しないだろう。
仮に非スタティックメンバーが無くてもデフォルトコンストラクタは呼べるしnewもできる。
0261デフォルトの名無しさん
2010/10/16(土) 14:25:05constクラスとかあったら一部の人が大喜びするかもな
0262259
2010/10/16(土) 15:31:07結論は>>252の方法を使えば、可能ってことでしょ
じゃなきゃ、C++ライブラリのcoutとかは処理系依存ってことになってしまう
259で説明したことは仕様書の6.7に書いてる。読み違えてなければ。
全メンバがスタティックなクラスでも
staticを付けてクラスを宣言してもコンストラクタ/デストラクタは持てる
後者は、コンストラクタがちゃんと動いたときのみデストラクタが走る
0263デフォルトの名無しさん
2010/10/16(土) 15:36:09mt19937 gen(time(0));
uniform_smallint<> dst(1, 6);
variate_generator<mt19937&, uniform_smallint<> > rand(gen, dst);
cout << rand() << endl;
のように書いている(実際には乱数を使って色々処理をする)のですが、
ここの分布関数を設定で切り替えて動かすようにしたいと考えています。
が、生成される rand() はみんな違うシグネチャを持つので、後段の
処理の部分だけ1つのコードにまとめることができず、C++でどう書くのが
普通なのか悩んでいます。
こういう場合、
class wraprand {
public:
wraprand(boost::function<int()>) { ... }
wraprand(boost::function<double()>) { ... }
wraprand(boost::function<bool()>) { ... }
double operator() () { ... }
のようにアダプタを書いて、rand を boost::function を介して
ラップして持ち回る以外に簡単な方法はないでしょうか?
0264デフォルトの名無しさん
2010/10/16(土) 15:42:01お前、頭壊れてない?
>>259と正反対の事言いだすなら、取り消してから言い出せよ。
0265デフォルトの名無しさん
2010/10/16(土) 15:55:25{
cout << rand() << endl;
};
でいいんじゃないの?
0266デフォルトの名無しさん
2010/10/16(土) 16:58:31リンク先が259です。ケアレスミス。
0267デフォルトの名無しさん
2010/10/16(土) 18:13:260268デフォルトの名無しさん
2010/10/16(土) 18:32:22今キーボードから入力した無数の数字の中から、
大きいものを順番に上から3つ表示するプログラムを作成中で、
インターネット上で同様のプログラムがあったので拾ってきました。
ここでif以降の処理の意味が理解できませんでした。
おそらく上から順番に次々と数字を代入している処理なのでしょうが・・
また最初に定義されていない「t」という変数の意味と、
t=a a=d d=tとループするような代入を繰り返していることの意味や、
なぜ同じ変数を指定しているのに処理が実行できるのかがわかりません。。
どなたかわかりやすく教えていただけないでしょうか
#include <stdio.h>
int main() { float a,b,c,d; int i; a=b=c=0;
for(i=0;i<10;i++){ scanf("%f",&d);
if(d>a){ float t=a; a=d; d =t; }
if(d>b){ float t=b; b=d; d =t;}
if(d>c){ float t=c; c=d; d =t; }
}
printf("%.1f>%.1f>%.1f\n",a,b,c);
return 0;
}
0269デフォルトの名無しさん
2010/10/16(土) 18:42:36いわゆるswap、入れ替えのコードだね。
変数xとyの値を入れ替えたいと思ったとき、
どんな代入文を書けばいいか想像してみよう。
0270デフォルトの名無しさん
2010/10/16(土) 19:10:47>>268 例えば、a=b;b=aでa,bが交換出来るか考えて見るといいよ
0271デフォルトの名無しさん
2010/10/16(土) 20:29:57>>269さん>>270さんありがとうございます。
直接代入する形だとa=bになって意味がなくなるので便宜上別の数を利用しているんですね
定義なしでも使える数があるということなのかな?少しわかった気がします
そう考えてみると、最初abcの値が0からスタートして、
仮に入力が1,2,3,4,5 と入力された場合は
0,0,0 => 1,0,0 => 2,1,0 => 3,2,1 => 4,3,2 => 5,4,3
と次々と大きい数字を入れていくってことですか?!
ぐぐぐなんかすごい感動してきたプログラムおもしろいなああ
0272デフォルトの名無しさん
2010/10/16(土) 21:14:39誰も答えてくれないのですか?
0273デフォルトの名無しさん
2010/10/16(土) 21:18:420274デフォルトの名無しさん
2010/10/16(土) 22:44:050275デフォルトの名無しさん
2010/10/16(土) 23:40:08そういう時に自分でなんとか出来るかどうかって所で、人は二種類に分けられるんだと思う。
0276デフォルトの名無しさん
2010/10/16(土) 23:40:430277デフォルトの名無しさん
2010/10/17(日) 00:43:260278デフォルトの名無しさん
2010/10/17(日) 03:06:09何か勘違いしてねぇか?
>268のコードではtもちゃんと定義しているぞ。
if(d>a){ float t=a; a=d; d =t; }
このコードは、こういう意味だ。
if (d > a) {
float t = a;
a = d;
d = t;
}
勿論、tはここでも定義されているし、他のif文の後のブロック内でも定義されている。
つまり、tはブロック内でのみ有効な変数として定義されているわけだ。
一応念の為に書き添えておくと、そのコードは所謂「ソート」の前哨戦だな。
ソートの世界は深くて楽しいぞw
0279デフォルトの名無しさん
2010/10/17(日) 14:22:35strcatで \ を連結する場合は
'\\'でエラーがでてしまうので"\\"にしたのですが
これであっていますでしょうか?
0280デフォルトの名無しさん
2010/10/17(日) 14:29:06正しい。
0281デフォルトの名無しさん
2010/10/17(日) 14:30:010282デフォルトの名無しさん
2010/10/17(日) 15:33:46どうせその後ファイル名も連結する積もりなら、sprintf()を使った方が手っ取り早くないか?
0283デフォルトの名無しさん
2010/10/17(日) 15:37:33sprintf(buf, "%.174s\\%.80s", path, file);
0284デフォルトの名無しさん
2010/10/17(日) 16:19:43あああなるほど!!!そういうことだったんですね
float t ってこの場所で定義していたのか・・・
ブロック内だけで定義するってこともできるんですね。すごい勉強になります
またお世話なるかもしれませんがよろしくお願いします
ありがとうございました!
0285デフォルトの名無しさん
2010/10/17(日) 19:51:32メモリ上にキャッシュし、キャッシュの容量が大きくなってきたら解放したいのですが、
どんな風にやればいいでしょうか
ファイル名から画像を取得できる連想配列と連結リストをそれぞれ用意して、
キャッシュの容量が一定値に達したら
リストの最初の画像を取得→連想配列からも削除
という方法を考えましたが、もっと良い方法があれば知りたいです
プログラムの殆どで参照カウントを使っているので、キャッシュから
画像を取得するときに必ずカウントを増やさなければいけないのも気になります
0286デフォルトの名無しさん
2010/10/17(日) 20:21:310287デフォルトの名無しさん
2010/10/17(日) 21:23:10i < 10; ++i) {
<iro iro>;
}
とやりたいのですが、FOR文の最初の項には文を一個しかかけないのでしょうか?
0288デフォルトの名無しさん
2010/10/17(日) 21:36:220289デフォルトの名無しさん
2010/10/17(日) 21:40:05,の後に宣言は書けないんじゃね?
0290デフォルトの名無しさん
2010/10/17(日) 21:41:22{
list<int>::iterator it = l.begin();
int i = 0;
while(i < 10)
{
・・・
++i;
};
}
とか書けばほとんど同じといっていいけど不恰好だ
0291デフォルトの名無しさん
2010/10/17(日) 22:06:260292デフォルトの名無しさん
2010/10/17(日) 22:08:13//iroiro
}
すごく…不恰好です…
書いといていうのはあれですが…
こんなのは…嫌です…
0293デフォルトの名無しさん
2010/10/17(日) 22:09:28int i;
for(it = l.begin(),i = 0; i < 10; ++i) {
<iro iro>;
}
これならいけるけどね
0294デフォルトの名無しさん
2010/10/17(日) 22:12:34itを10進めながら処理するループだと思ってたけど、違うのかな?
0295デフォルトの名無しさん
2010/10/17(日) 22:40:00for( std::list<int>::iterator it = l.begin(); i <= 10; ++i ){
<iro iro>;
}
0296デフォルトの名無しさん
2010/10/18(月) 10:03:32今、データを読み込んで整理しています。
手順としては
1、データを1行ずつ読み込む(行はたくさんあります)
2、読み込んだデータをif文で整理しています。
しかし、if文を用いているのですがすべて同じ結果になってしまいます。
何故か分かる方はいらっしゃいますか?
ちなみに先生に聞くと読み込むプログラムはあっていてif文が間違っていると言われました。
私が書いているのは以下のような具合です。
int a = s.b + s.c;(sのクラスは用意しています。)
if ( a = 1){
if ( s.nenn == 2 || s.nenn == 3 ) {
cout << s.kei << endl;
}
}
if ( a = 2){
if ( s.nenn == 2 || s.nenn == 3 ) {
cout << s.kei << endl;
}
}
0297デフォルトの名無しさん
2010/10/18(月) 10:07:340298デフォルトの名無しさん
2010/10/18(月) 10:35:22無事に出来ました。
本当にありがとうございました。
0299デフォルトの名無しさん
2010/10/18(月) 15:32:16if ( a == 1){}
等で示すのは分かるのですがデータが空欄のものを持ってきたいときは
どのようにすればよいのでしょうか?
0300デフォルトの名無しさん
2010/10/18(月) 15:37:070301デフォルトの名無しさん
2010/10/18(月) 17:01:010302デフォルトの名無しさん
2010/10/18(月) 18:41:34決まっているなら、その順番を教えていただけないでしょうか。
0303デフォルトの名無しさん
2010/10/18(月) 18:45:090304デフォルトの名無しさん
2010/10/18(月) 19:59:130306デフォルトの名無しさん
2010/10/18(月) 22:43:400307デフォルトの名無しさん
2010/10/19(火) 10:47:14あるなら名前を教えてほしいのですがよろしいでしょうか?
0308デフォルトの名無しさん
2010/10/19(火) 10:56:190309デフォルトの名無しさん
2010/10/19(火) 14:14:190310デフォルトの名無しさん
2010/10/19(火) 22:16:38ヒープ領域にメモリを取れる限界量というのは決まっているんでしょうか?
short int *array = new short int[200000];
という類の事をしたらコンパイルは通るものの、アプリケーションがフリーズしてしまいます
0311デフォルトの名無しさん
2010/10/19(火) 22:19:230312デフォルトの名無しさん
2010/10/19(火) 22:22:04たったそんだけでフリーズするの?
0313310
2010/10/19(火) 22:34:08メモリ4GBを積んでいるので、数MBのnewくらいなら大丈夫かと思ったんですが・・・
>>312
してしまいます・・・
デバッガで追いかけたところ、
short int *array = new short int[200000];
のarrayに-12851という値が入っているのみなので、配列の確保に失敗しているのかなと思った次第です
0314デフォルトの名無しさん
2010/10/19(火) 22:43:42ちがう原因でフリーズしてんじゃないの?
0315デフォルトの名無しさん
2010/10/19(火) 22:47:38大きいサイズの確保をし始めたら出てきた上にデバッガで追えないのでコレかと思ったのですが・・・
もうちょっと探してみます
0316デフォルトの名無しさん
2010/10/20(水) 09:33:10アドレスに正負は関係ないだろ。
スタックやヒープを壊しているとかの落ちな予感。
0317デフォルトの名無しさん
2010/10/20(水) 09:46:39その構造体自体も「=」で一発で代入できるのに、
比較って「==」で全メンバを比較してくれないんでしたっけ?
もちろん、自分で構造体にoperator==()を作ればできるでしょうけど。
0318デフォルトの名無しさん
2010/10/20(水) 11:21:390319デフォルトの名無しさん
2010/10/20(水) 11:31:14そうでしたか。面倒だな。
勝手に代入してくれるなら勝手に比較もしてほしかった。
0320デフォルトの名無しさん
2010/10/20(水) 12:43:20eqとequalのどっちを期待してるか分かんないだろ。
0321デフォルトの名無しさん
2010/10/20(水) 15:40:20クラスの中でstatic関数にしておくのと
そのままの関数とするのと
どちらが良いですか?
0322デフォルトの名無しさん
2010/10/20(水) 17:06:090323デフォルトの名無しさん
2010/10/20(水) 18:07:04馬鹿な事を聞くな。
クラスの中でsutatic関数にしたら、普通の関数じゃ無くなるだろ。
そのまま意外はあり得ない。
0324デフォルトの名無しさん
2010/10/20(水) 18:08:070325デフォルトの名無しさん
2010/10/20(水) 18:11:06んなことない
が、そのクラスとまったく無関係の機能をクラスに押し込めるのもどうかと思うが
0326デフォルトの名無しさん
2010/10/20(水) 18:16:000327デフォルトの名無しさん
2010/10/20(水) 18:31:09そんなの用途によるに決まってる。
0328デフォルトの名無しさん
2010/10/20(水) 20:13:51たった400MB位屁でもない筈だが。
まさかとは思うが、メモリが足りなくてswapしているなんてオチじゃないよな。
0329デフォルトの名無しさん
2010/10/20(水) 21:02:25メモリは前から順番に使うわけじゃない。分散して使っている。
10MB細切れの合計400MBだったらスワップせんかもしれんけどね。
連続した400MB?スワップして当然だろ。
0330デフォルトの名無しさん
2010/10/20(水) 21:11:330331デフォルトの名無しさん
2010/10/20(水) 21:40:15> short int *array = new short int[200000];
俺には 400KB に見えるが・・・ まぁ最近視力落ちてるからな・・・
0332デフォルトの名無しさん
2010/10/21(木) 11:24:460333デフォルトの名無しさん
2010/10/21(木) 16:52:1802| struct P {
03| template<typename _T>void foo(){}
04| };
05|};
06|template<typename _A>struct B : _A {
07| typedef typename _A::P P;
08| void bar(){
09| P p;
10| p.foo<B>();
11| }
12|};
g++ で 10 行目でエラーが出てしまうのですが
このような関数呼び出しをしたい場合はどのようにすればよいのでしょうか?
関数 foo の引数にダミーのポインタを渡す等をせず、型情報だけを渡したいです
B のテンプレートパラメタ _A には A を継承した様々なクラスが指定される感じです
0334デフォルトの名無しさん
2010/10/21(木) 16:58:25でどうよ
0335デフォルトの名無しさん
2010/10/21(木) 18:54:55http://codepad.org/gT96uQQj
こうかな
0336デフォルトの名無しさん
2010/10/21(木) 22:53:08ぶっちゃけ、C++では関数の戻り値がポインタ以外はポインタを使う意義がわかりません
私がポインタを必要とするプログラムを、書いたことが無いだけでしょうか?
0337デフォルトの名無しさん
2010/10/21(木) 22:55:22データ構造とアルゴリズムを勉強しましょう
ポインタがもしなかったらこの世界が崩壊理由が理解できるでしょう
0338デフォルトの名無しさん
2010/10/21(木) 23:13:09ポインタなんでC++の入門書の最後で扱うべき、少なくともイテレータや参照よか後にしろ
とかこぼしてたみたことあるから、まぁ色々とあるんだろうなとか
0339デフォルトの名無しさん
2010/10/21(木) 23:20:25ポインタとか低レベルのものは後でいいという考え方もまあ理にかなってはいるけどね
業務・実践向けの教え方だとこっちの方がいいと思う
0340デフォルトの名無しさん
2010/10/22(金) 00:36:210341デフォルトの名無しさん
2010/10/22(金) 01:27:17#include<stdio.h>
void main()
{
int i;
char a[20];
for (i=0;i<=9;i++) {
scanf("%c%*c",&a[i]);
a[i+1]='\0';
printf("%s\n",&a);
}
}
これのchar型配列をNULLで初期化する意味を教えてください。
0342デフォルトの名無しさん
2010/10/22(金) 01:38:06\0で文字列の終わりを表すため。
もし\0が無ければ、配列aを見ていって\0が見つかるまで表示する
なければ多分、バッファオーバーフローして\0が見つかるところまで表示する
0343デフォルトの名無しさん
2010/10/22(金) 01:45:56ありがとうございます
0344デフォルトの名無しさん
2010/10/22(金) 02:17:28パソコン上でなっている音の波形データをとってくる方法ってありますか?
itunesとかで再生している音を外部からとってくるイメージなんですけど
オーディオデバイスにアクセスしたりとかできるんですかね?
0345デフォルトの名無しさん
2010/10/22(金) 04:46:07GetWindowLong(FindWindow("Notepad", NULL), GWL_WNDPROC)
がNULLになってる。
winmap使っても見えない。
0346デフォルトの名無しさん
2010/10/22(金) 10:20:520347デフォルトの名無しさん
2010/10/22(金) 10:29:490348デフォルトの名無しさん
2010/10/22(金) 11:03:32c++の本でclassの中身の変数を、同じクラス同士で
a = b + cという感じに計算していたのですが、これはどのようにやるのでしょうか?
0349デフォルトの名無しさん
2010/10/22(金) 11:09:150350デフォルトの名無しさん
2010/10/22(金) 13:00:13メイン関数のほうではなかったことになりますが、
それを防ぐ方法はありますか?
できればコンソールアプリ内での知識でお願いします。
0351デフォルトの名無しさん
2010/10/22(金) 13:01:140352デフォルトの名無しさん
2010/10/22(金) 13:12:33引数を「値渡し」しても関数内で宣言された別の変数に値がコピーされてるだけなので
いくら関数内で変更しても呼び出し元には影響ありません
C言語なら「ポインタ渡し」、C++なら「参照渡し」をしてください
具体的なやり方はggrks
0353デフォルトの名無しさん
2010/10/22(金) 14:03:460354デフォルトの名無しさん
2010/10/22(金) 14:09:310355デフォルトの名無しさん
2010/10/22(金) 14:09:38漏れなくC++コンパイラがついてきますがそれでよければ承ります。
つーか、なんでCに拘るねん。
>>350
それを防ぐことを考えるよりも、先ずはローカル変数は関数毎に独立していることに慣れること。
受け渡しの方法は、引き数や戻り値、或いは構造体というキーワードで調べれば判る。
>>348
「classの中身の変数」の意味がよく判らんが、class Foo bar, bazとして
bar + bazなどとしているということなら、>349。
0356デフォルトの名無しさん
2010/10/22(金) 14:11:40質問の体を為してないんだもん。回答しようがないやな。
0357デフォルトの名無しさん
2010/10/22(金) 14:12:140358デフォルトの名無しさん
2010/10/22(金) 14:13:41応えられないならそう言えよwww
0359デフォルトの名無しさん
2010/10/22(金) 14:15:440360デフォルトの名無しさん
2010/10/22(金) 14:16:05おう、こんだけ応えているってぇのに何が気にいらねぇんだ、表に出やがれ。
0361デフォルトの名無しさん
2010/10/22(金) 14:16:380362デフォルトの名無しさん
2010/10/22(金) 14:17:230363デフォルトの名無しさん
2010/10/22(金) 14:23:43>>352です
>>354と358は私とは別人です
どうかご教授願いたいです
あとggrskもわかりませんでした
できればコンソールアプリ内での知識でお願いします
0364デフォルトの名無しさん
2010/10/22(金) 14:28:240365デフォルトの名無しさん
2010/10/22(金) 14:28:56http://d.hatena.ne.jp/keyword/ggrks
0366デフォルトの名無しさん
2010/10/22(金) 14:29:11自分の番号さえ書き間違える(or勘違いする)くらいだしな。
0367デフォルトの名無しさん
2010/10/22(金) 14:53:28入力は1つのビットだけ立っているものして、それ以外の場合
出力は不定でかまいません。
入力 -> 出力
0001 -> 0
0010 -> 1
0100 -> 2
1000 -> 3
0368デフォルトの名無しさん
2010/10/22(金) 15:00:270369デフォルトの名無しさん
2010/10/22(金) 15:06:03int x = 4 ;
for ( int i = 0 ; i < sizeof(int)*8 ; i++ ){
if ( x&(1<<i)){
printf ("%dビット目が立ってる\n", i ) ;
}
}
0370デフォルトの名無しさん
2010/10/22(金) 15:07:43if (x >> 16) { n += 16; x >>= 16; }
if (x >> 8) { n += 8; x >>= 8; }
if (x >> 4) { n += 4; x >>= 4; }
if (x >> 2) { n += 2; x >>= 2; }
if (x >> 1) { n += 1; x >>= 1; }
0371デフォルトの名無しさん
2010/10/22(金) 15:12:03http://aggregate.org/MAGIC/のLeading Zero Countかな。
0372デフォルトの名無しさん
2010/10/22(金) 15:17:57>>352
なるほど、ポインタを使えば確かにできそうです。
本当にありがとうございました。
0373デフォルトの名無しさん
2010/10/22(金) 16:07:54>>335
レスありがとうございます
335 で行けました
スコープ演算子の後に template を使えるのは知っていたのですが
アクセス演算子の後にも使えるのですね
0374デフォルトの名無しさん
2010/10/22(金) 18:00:27ありがとうございます。
参考にさせてもらいます。
0375デフォルトの名無しさん
2010/10/22(金) 21:05:44これってpod = {0};と同じように0初期化保証されますか?
0376デフォルトの名無しさん
2010/10/23(土) 02:15:17CとC++の仕様の違いでしょうか?
0377デフォルトの名無しさん
2010/10/23(土) 03:49:47Cではconstにしても定数として扱われないので#defineにせざるをえない
0378デフォルトの名無しさん
2010/10/23(土) 09:45:35C++のプログラムの中でコードを書いてコンパイルすることが目的です。
Microsoft Visual Studio 10.0\VC\bin にのみパスを通しています。
今回問題としているのはプログラム上での一時的な環境変数の追加です。
ofstream により適当な test.cpp ファイルを作ります。その後、
system("vcvars32");
system("cl /EHsc test.cpp");
として、test.cppをコンパイルしたいのですが
cl.exe - システム エラー
コンピューターに mspdb100.dll がないため、プログラムを開始できません。
となり、コンパイルが実行されません。
cmd.exe上でtest.cppのあるディレクトリまで移動して
>vcvars32
>cl /EHsc test.cpp
とした場合はコンパイルが成功し、test.exeが作成されることを確認済みです。
つまり知りたいことは、cmd.exe上でvcvars32を読んだ場合はパスの設定が有効になるのに、
system関数を使った場合はそうならないのは何故か。
また、もしそうならばc++のプログラム上でどのように一時的にパスを追加するのかです。
よろしくお願いします。
コードのリンクを貼っておきます。
http://codepad.org/w74epWeu
0379デフォルトの名無しさん
2010/10/23(土) 10:10:42cmd.exeを新しく立ち上げてcl /EHsc test.cppを実行
という動作になっているから
一時的にパスを追加するのはC++じゃ無理なのでWinAPIを使う
0380デフォルトの名無しさん
2010/10/23(土) 11:40:06ありがとうございます。
ExpandEnvironmentStrings と SetEnvironmentVariable を用いて
プログラム上で一時的に環境変数を追加することができました。
Visual Studio のパスが埋め込んであってちょっと汚いですが
上手くいったコードを載せておきます。
http://codepad.org/kS3qAnwV
しかし最終的にはこうしました。これは C++ の話ではないので余談ですが。
system("vcvars32 & cl /EHsc test.cpp");
0381デフォルトの名無しさん
2010/10/23(土) 11:58:27よく分かりました。
どうもありがとう。
0382デフォルトの名無しさん
2010/10/23(土) 19:15:04あまり見たことがないんですけど
0383デフォルトの名無しさん
2010/10/23(土) 19:54:520384デフォルトの名無しさん
2010/10/23(土) 20:01:00メンバ変数はポインタを使った方が、動作が速いのでしょうか?/
0385デフォルトの名無しさん
2010/10/23(土) 20:34:550386デフォルトの名無しさん
2010/10/23(土) 20:49:130387デフォルトの名無しさん
2010/10/23(土) 20:51:30速さ目的でやることじゃない
0389デフォルトの名無しさん
2010/10/23(土) 20:55:47この板のスレッド検索したら、MacとWinのGTKは見つかったけど
Linuxがない。Linux板に行って聞くべき?
0390デフォルトの名無しさん
2010/10/23(土) 21:04:07ここのスレでgtkの話は..
0391デフォルトの名無しさん
2010/10/23(土) 21:06:54ダメなのか?では、別のとこ探してみます。
ありがとう。
0392デフォルトの名無しさん
2010/10/23(土) 21:14:36ダメじゃないけど、このスレは「C++相談室」と比べると書き込み少ないよ
大体が文法の事だったりするし
0393デフォルトの名無しさん
2010/10/23(土) 21:41:07GTKで、テキストを表示させたい。
フォントを指定して色を変更したりサイズを変更したり。
そして、表示したテキストをコピー&ペーストしたい。
という条件に当てはまるウィジェット知りませんか?
cairoを使うと、色やサイズは変更できるけど、コピペができない。
devhelpを探してみたけど、今日の昼から探しつづけて力尽きた。
知ってる人がいたら、ウィジェットの名前でいいんで教えてください。
0394デフォルトの名無しさん
2010/10/23(土) 22:24:370395デフォルトの名無しさん
2010/10/24(日) 03:08:20gotoを利用したラベルを使ってみたところ以上のようなコンパイルエラーが。
gotoを使わずにifでやれば動くのですが・・・。
むやみに使ってはいけないとはいえ、何がだめなのかわからないので悲しいです
どなたかどんなエラーなのか教えてください
0396デフォルトの名無しさん
2010/10/24(日) 09:08:16gotoのためのラベルの直後には必ず文がないといけない。 }とかだとそのエラーが出る。
単純にlabel:;と書けばよかった気がする。
0397デフォルトの名無しさん
2010/10/24(日) 09:09:25Cならラベルの位置を変数宣言の後に移動させてください。
0398デフォルトの名無しさん
2010/10/24(日) 19:53:030399デフォルトの名無しさん
2010/10/24(日) 19:55:290400デフォルトの名無しさん
2010/10/24(日) 21:08:36ちょっくら調べてみる。ありがと。
0401デフォルトの名無しさん
2010/10/24(日) 21:50:35状況に応じてプログラムを2つ(のexe)に分けたり、分けずに1つのままにするプログラムを作ろうとしています。
その中で共通利用するクラス(プログラムを分ける場合それぞれに複製するクラス)に
100近い変数を抱える構造体を送りたいのですが、
プログラムA側とプログラムB側で同じ構造体を送ろうとすると、当然定義の段階で衝突してしまいます。
中身が完全に一致で名前が違う構造体を送る方法 もしくはこういう状況に適した技法が有れば
ご助言頂けませんでしょうか・・? 100個全部引数にするのが妥当なのでしょうか・・?
0402デフォルトの名無しさん
2010/10/24(日) 21:53:250403デフォルトの名無しさん
2010/10/24(日) 21:54:480404デフォルトの名無しさん
2010/10/24(日) 22:01:19中身が完全に一致してて名前が違う事が問題なら
受け取った時にキャストしてやればそれだけで解決しそうだけど。
>100近い変数を抱える構造体を送りたいのですが
…これまずそうじゃね?
参照じゃなくて値で送るの?
0405デフォルトの名無しさん
2010/10/24(日) 22:56:18deleteをしているのは普通に見ますが、スマポを使っているところは見たことがありません
0406401
2010/10/24(日) 23:18:53今回は全て参照送りという形で処理してしまいました。
キャスト…メモしておき今後修正が必要になった際調べて利用させて頂こうと思います。
ありがとうございました。
0407デフォルトの名無しさん
2010/10/24(日) 23:45:09参照送りでいいんじゃないの?
そんなでかい構造体、値送りで送ったらパフォーマンスに影響が出そう…
0408デフォルトの名無しさん
2010/10/25(月) 06:30:450409デフォルトの名無しさん
2010/10/25(月) 10:30:34ありがとうございます。
ラベルを使わない方法で作りましたが、ラベルありでも動くように直してみます
0410デフォルトの名無しさん
2010/10/25(月) 16:25:22(1)
buf[0]='a';
buf[1]=-126;
buf[2]=10;
buf[3]=0;
(2)
buf[0]='a';
buf[1]='a';
buf[2]=10;
buf[3]=0;
(1)と(2)を同じように
strchr(buf,'\n');
としても同じ結果になりません
(1)はNULLになります
(2)はNULL以外です
なぜちがうんでしょうか?仕様?
0411デフォルトの名無しさん
2010/10/25(月) 16:29:21http://codepad.org/k2J5s66M
どっちも同じに見えるが
0412デフォルトの名無しさん
2010/10/25(月) 16:40:09テスト環境はVc6.0です
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <tchar.h>
int main(int argc, char* argv[])
{
char buf[4];
buf[0]='a';
buf[1]=-126;
buf[2]=10;
buf[3]=0;
printf("%p\n", _tcschr(buf, '\n'));
buf[0]='a';
buf[1]='a';
buf[2]=10;
buf[3]=0;
printf("%p\n", _tcschr(buf, '\n'));
return 0;
}
0413デフォルトの名無しさん
2010/10/25(月) 16:45:550414デフォルトの名無しさん
2010/10/25(月) 16:46:41ワラタw
0415デフォルトの名無しさん
2010/10/25(月) 16:52:36VS2010だとchar buf[4]; を wchar_t buf[4]; にしたら同じになったよ
charのままだと曖昧エラーが出てコンパイルが通らない
0416412
2010/10/25(月) 16:57:16やはりマルチバイト文字なのがだめなのですね
文字入力されたものをファイルに書き込んでそれを読んだときに
どうしても最後に改行コードがくっついて困ってます
上の例みたいに日本語を中途半端に書き込んでると
改行コードを消せなくなります…
0417デフォルトの名無しさん
2010/10/25(月) 16:57:59wchar_t buf[4];にしてUnicodeでコンパイルすれば正常
つかなんでわざわざ_tcschr?
0418デフォルトの名無しさん
2010/10/25(月) 16:58:20strrchr()使ったら?
0419412
2010/10/25(月) 17:07:52_tcschrにしてますがマルチバイトで\nさがしちゃだめってことがわかりました
strrchrつかって\n消すことにしました
ありがとうございました
0420デフォルトの名無しさん
2010/10/25(月) 17:35:54もまえらどんなPCスペックなのよ
0421デフォルトの名無しさん
2010/10/25(月) 17:36:470422デフォルトの名無しさん
2010/10/25(月) 17:44:180423デフォルトの名無しさん
2010/10/25(月) 18:24:47i7-920と6GBDDR3と牛SSDで今のところストレスフリー
0424デフォルトの名無しさん
2010/10/25(月) 18:28:14新しいパソコンにインストールするwindowsを買わせようとしているのだからね
すなおにGCC+ECLIPSEをつかえばいいのだよ。
0425デフォルトの名無しさん
2010/10/25(月) 18:30:33gcc も結構重い by PenIII 1GHz x 2
0426デフォルトの名無しさん
2010/10/25(月) 18:34:03eclipseが重いなら他にソフトいくらでもあるしwwwwwww
0427デフォルトの名無しさん
2010/10/25(月) 19:07:16そこまでの環境を用意しないとダメなのか、アホらしいな
0428デフォルトの名無しさん
2010/10/25(月) 19:09:56そんな糞な環境やめろよ
言語の学習するだけでストレスになるなんて馬鹿らしいだろ
0429デフォルトの名無しさん
2010/10/25(月) 19:20:03比べるならclとだろwww
0430デフォルトの名無しさん
2010/10/25(月) 21:22:18やめた。
Qtを試してみたら、色々コンポーネントとかあるし(Gridとかもある)MDI対応だから
Qtでしばらくいく。開発環境も軽いし。
0431デフォルトの名無しさん
2010/10/25(月) 23:17:56スタックオーバーフローが発生すると思います
最近のコンピュータ(メモリ4GB)くらいだと、どのくらいスタックが確保されるのですか?
また、newを使った時のメリットを教えてください
0432デフォルトの名無しさん
2010/10/25(月) 23:26:32Windowsは1MB、Linuxは8MBじゃないかな
0433デフォルトの名無しさん
2010/10/25(月) 23:33:03普通1MB程度
VS2010ならプロパティシートのリンカ→システム→スタックサイズの設定
new/deleteはオブジェクト指向のキモだろ
ポインタで仮想関数をポリモーフィズムする
参照でも出来るがやりにくい
スタックサイズとは関係無いヒープ領域から取られる
0434デフォルトの名無しさん
2010/10/26(火) 07:55:26B b;
}
class B{
A a;
}
みたいな感じで互いのclassの変数をクラスに持たせたいんだけど、どうすればできますか?
これだとclassAでBが宣言されていないってエラーがでる
0435デフォルトの名無しさん
2010/10/26(火) 07:58:29class B;
class A{
B b;
};
class B{
A a;
};
とすれば使えるのね
0436デフォルトの名無しさん
2010/10/26(火) 07:59:46つかえねーよ馬鹿
ちょっと考えて見ればわかるだろうがそれ無限に続いちゃうから無理
class B;
class A{
B *b;
};
class B{
A a;
};
0437デフォルトの名無しさん
2010/10/26(火) 09:07:430438デフォルトの名無しさん
2010/10/26(火) 09:39:40それ別にC++のクラスでなくても構造体でも無理だよ
0439デフォルトの名無しさん
2010/10/26(火) 09:47:31遅すぎるよ
0440デフォルトの名無しさん
2010/10/26(火) 10:35:35遅いんじゃなくて今見た所なの
わかる?アホ
0441デフォルトの名無しさん
2010/10/26(火) 10:37:480442デフォルトの名無しさん
2010/10/26(火) 10:39:580443デフォルトの名無しさん
2010/10/26(火) 10:40:440444デフォルトの名無しさん
2010/10/26(火) 10:49:500445デフォルトの名無しさん
2010/10/26(火) 11:07:48お前がアホ
0446デフォルトの名無しさん
2010/10/26(火) 11:12:310447デフォルトの名無しさん
2010/10/26(火) 11:14:070448デフォルトの名無しさん
2010/10/26(火) 11:31:36アホ
0449デフォルトの名無しさん
2010/10/26(火) 11:36:440450デフォルトの名無しさん
2010/10/26(火) 12:07:04とアホが申しております
0451デフォルトの名無しさん
2010/10/26(火) 12:08:33^^;
0452デフォルトの名無しさん
2010/10/26(火) 13:07:26↓
0453デフォルトの名無しさん
2010/10/26(火) 13:40:220454デフォルトの名無しさん
2010/10/26(火) 13:42:560455デフォルトの名無しさん
2010/10/26(火) 13:54:470456デフォルトの名無しさん
2010/10/26(火) 16:41:260457デフォルトの名無しさん
2010/10/26(火) 16:52:180458デフォルトの名無しさん
2010/10/26(火) 17:02:28iterator insert( iterator itr, size_t num, const T &value )
0459デフォルトの名無しさん
2010/10/26(火) 17:10:59ありがとうございます。
0460デフォルトの名無しさん
2010/10/26(火) 17:14:13find_ifの逆で最後に見つかった要素を返す関数はありますか?
0461デフォルトの名無しさん
2010/10/26(火) 17:16:47rbegin()とrend()を使ってfind_if()を適用する
0462デフォルトの名無しさん
2010/10/26(火) 17:26:350463デフォルトの名無しさん
2010/10/26(火) 17:37:27class Value : public std::unary_function<int, bool> {
int val;
public:
Value(int i) : val(i) {}
bool operator()(int i) const {
return i == val;
}
};
int main()
{
int a[] = {10, 24, 21, 42, 63, 31, 73, 25, 12};
std::vector<int> vi;
for (int i = 0; i < static_cast<int>(sizeof(a) / sizeof(a[0])); i++)
vi.push_back(a[i]);
std::vector<int>::const_reverse_iterator vicr = std::find_if(vi.rbegin(), vi.rend(), Value(12));
std::cout << *vicr << std::endl;
std::vector<int>::const_iterator vic = vicr.base();
std::cout << *vic << std::endl;
std::cout << *(vic - 1) << std::endl;
}
0464デフォルトの名無しさん
2010/10/26(火) 18:40:12ありがとうございました。イテレータの理解が深まりました
0465デフォルトの名無しさん
2010/10/26(火) 19:01:16なんでこんな仕様なの?禿げはアホなの?
0466デフォルトの名無しさん
2010/10/26(火) 19:01:450467デフォルトの名無しさん
2010/10/26(火) 19:57:26ずれてたほうが自然に書けるだろ?
0468デフォルトの名無しさん
2010/10/26(火) 20:04:320470デフォルトの名無しさん
2010/10/26(火) 21:29:33場所の内容を呼び出すのでエラーなんだけどな
ポインタもイテレータも最後の要素の一つ先まで指せるが、逆反復子を使った場合
一番最後を指すのはありなん?配列は明らかにエラーだけど
0471デフォルトの名無しさん
2010/10/26(火) 21:32:24そういうエラーを防ぐために逆反復子はわざと一個ずらした所をポイントするようにしてあるんだ
base()メンバ関数で元のイテレータに戻した時にこのエラーが出やすいのでわざとbase()なんて
メンバ関数を呼び出さないと変換出来ないようなややこしい仕組みになってるんだな
0472デフォルトの名無しさん
2010/10/26(火) 21:38:32普通のイテレータを逆順イテレータに変換する時はカッコで囲むだけでOK
vector<int>::iterator pos;
vector<int>::reverse_iterator rpos(pos);
しかし逆順イテレータを普通のイテレータに変換する時にはメンバ関数base()を
呼び出さなくてはならない
pos = rpos.base();
この時に>>470のようなエラーが起きやすいので注意をプログラマに促すために
わざとこのようなくどい方法を採っているのではないかと思う
0473デフォルトの名無しさん
2010/10/26(火) 21:45:10載せる場合、コピーコンストラクタでリストごとコピーするように
しなければうごかないでしょうか。かなりめげてますorz
0474デフォルトの名無しさん
2010/10/26(火) 21:53:050475デフォルトの名無しさん
2010/10/27(水) 08:22:34そのクラスのデフォルトコンストラクタがあるから
動きはするだろうよ
それでいいのかは知らんが
むしろきっとデストラクタの関係で駄目なんだろうけど
0476デフォルトの名無しさん
2010/10/28(木) 15:21:32========
class A {
public:
A(void){};
~A(void){};
void foo(void);
void hoge(void);
};
//a_1.cpp
========
#include "a.h"
A::A(void) {}
A::~A(void) {}
void A::foo(void) { /* 普通のソース */ }
//a_2.cpp
========
#include "a.h"
void A::hoge(void) { /* 長いソース */ }
IDEはVisualStudio2008です。
このように分割コンパイルしたいのですが、a_2.cppでLNK2019が出てビルドできません。
externの使えないメンバ関数の定義を、(派生クラスにするのは無しで)
別のファイルに分けられる手法があれば、ご教授願えましたら幸いです。
0477デフォルトの名無しさん
2010/10/28(木) 15:45:42~A(void){};
{}はずせ
0478デフォルトの名無しさん
2010/10/28(木) 15:52:360479デフォルトの名無しさん
2010/10/28(木) 16:04:14リンクエラーはソースを分割したことじゃないと思われ
0480デフォルトの名無しさん
2010/10/28(木) 16:11:060481デフォルトの名無しさん
2010/10/28(木) 16:31:22まあ次からはハイエナ低スキルに噛みつかれないよう気をつけなよ
0482デフォルトの名無しさん
2010/10/28(木) 22:58:47勉強しても勉強しても、知らない文法があるし
0483デフォルトの名無しさん
2010/10/29(金) 00:25:52どうもありがとうございます。unique_ptrですか。C++0x?勉強して
みます。結局、コピーコンストラクタを使わないようなテンプレート
クラスを作ったのですが、いつのまにか既存のクラスのコピー
コンストラクタを実装してました( ゚д゚)ポカーン
いまおこったことをありのまま話すぜ(ポルナレフAA略
0484デフォルトの名無しさん
2010/10/29(金) 19:03:24"const.h"みたいに一つのヘッダに定数をまとめて定義し,それを複数のファイルでインクルードしている場合は
"const.cpp"に定義を書いて,"const.h"ではexternで宣言するのがウェブでよく紹介されている方法でした.
しかし,この方法だと,リンク時にしか定数の値が各ファイルからは分からないので,
配列を定義するときの添字にはコンパイルエラーで使えません.
ヘッダでconst定数定義をし,それを配列定義の添字に使う方法はないのでしょうか.
0485デフォルトの名無しさん
2010/10/29(金) 19:25:52{
static int const value = 10000000000000000000000000;
};
int main(void)
{
int array[ArraySize::value]; // Oh. It's cool!!
return 0;
}
0486デフォルトの名無しさん
2010/10/29(金) 20:44:31みたいに書いちゃえばいいだけの話じゃないのか
というかそんなアホな方法がよく紹介されてるってマジかよ
0487デフォルトの名無しさん
2010/10/29(金) 20:55:13俺はメモリ取られるのが気に入らないからenumにするけど
0488デフォルトの名無しさん
2010/10/29(金) 21:07:160489484
2010/10/29(金) 21:48:27複数のファイルからインクルードされるヘッダなので、そのままだと多重定義になってしまいます。
複数の方が提案されてた方法ですし、アホではなく現実的だと思うのですが、
配列定義の添字には使えなくて困っていました。
>>485
ありがとうございます。試してみます。
0490デフォルトの名無しさん
2010/10/29(金) 22:36:01普通の質問なんですけど、
メモリ確保されていないことっていうのは
どうやって確認すればいいのですか?
0491デフォルトの名無しさん
2010/10/29(金) 22:41:49&ArraySize::valueがundefined referenceになったのでそう判断した。
0492デフォルトの名無しさん
2010/10/29(金) 22:50:20まじすか
VC2010で
cout << &ArraySize::value;
で普通にアドレスが出てしまいました
これはコンパイラによるということでしょうか・・・?
0493デフォルトの名無しさん
2010/10/29(金) 23:03:37http://codepad.org/uAKp27IW
0494デフォルトの名無しさん
2010/10/29(金) 23:12:25なるほど・・・
ありがとうございました
0495デフォルトの名無しさん
2010/10/30(土) 10:51:40多重定義になるわけねーだろ馬鹿
0496デフォルトの名無しさん
2010/10/30(土) 11:05:10>>485
ttp://codepad.org/z10OwQef
根本的なことが間違ってる
0497デフォルトの名無しさん
2010/10/30(土) 12:20:08>ヘッダでconst定数定義をし,それを配列定義の添字に使う方法はないのでしょうか.
この要求に答えるのが
const int x = 10;
なんだが
static にしないと定数扱いにならないんだよ
0498493
2010/10/30(土) 12:27:40普通の書き方はそれだよね。それは知ってる。
ヘッダに書く方法を聞かれてて、そこに初期化を入れてた点がそんなことできるんだ、という点。
ヘッダにしか書かないので自動的に唯一のメモリが確保されてると思った。templateみたいに。
でもアドレスもなく右辺値としてだけ使用される点が不思議だな、と思ったというわけ。
どういうことなのか知っているなら、詳しく教えてくれると嬉しい。
0499デフォルトの名無しさん
2010/10/30(土) 12:53:21定義を別にしなきゃいけないのは非const の時じゃなかったか?
0500デフォルトの名無しさん
2010/10/30(土) 13:38:42C++0xなら整数型の制限は外れる
ネームスペーススコープで const int x = 10; と書いても static つけた時と同じ扱い
0501デフォルトの名無しさん
2010/10/30(土) 13:46:380502デフォルトの名無しさん
2010/10/30(土) 14:18:360503デフォルトの名無しさん
2010/10/31(日) 09:33:41aaa = retnterpret_cast<image_header_section *>(static_cast<hoge_section>(bbb))
2重に重ねただけで、悪夢です。
aaa = retnterpret_cast<image_header_section *>(
static_cast<hoge_section>(bbb))
↑ ここで改行しても意味無しです。
みなさんどのように改行していますか?
0504デフォルトの名無しさん
2010/10/31(日) 09:56:310505デフォルトの名無しさん
2010/10/31(日) 10:57:180506デフォルトの名無しさん
2010/10/31(日) 12:29:200507デフォルトの名無しさん
2010/10/31(日) 12:51:29複数行のdefineとか、inlineの代わりに使ってる事結構あるぞ
0508デフォルトの名無しさん
2010/10/31(日) 13:00:39個人的な特性かもしれないけど、横に長いと視認性が極端に落ちるからいやん。
0509デフォルトの名無しさん
2010/10/31(日) 13:04:22std::for_eachとラムダ式の組み合わせは正直キモイっす
0510デフォルトの名無しさん
2010/10/31(日) 13:05:32改行する必要なくなる。
短い方が良いと思ってるうちはおこちゃまということだ。
0511デフォルトの名無しさん
2010/10/31(日) 13:08:430512デフォルトの名無しさん
2010/10/31(日) 13:15:360513デフォルトの名無しさん
2010/10/31(日) 13:19:15ハッキングするひとをハッカーと思っている人はおこちゃま。
0514デフォルトの名無しさん
2010/10/31(日) 13:20:16hacker
0515デフォルトの名無しさん
2010/10/31(日) 13:20:440516デフォルトの名無しさん
2010/10/31(日) 13:29:22>>510
(笑)
0517デフォルトの名無しさん
2010/10/31(日) 14:04:22小説のように読むためにも、句読点と同じように改行をする必要があると思うのだけれど…
0518デフォルトの名無しさん
2010/10/31(日) 14:32:10ライトノベルというジャンルということを紹介してくれて有難うwww
0519デフォルトの名無しさん
2010/10/31(日) 14:36:140520デフォルトの名無しさん
2010/10/31(日) 14:38:290521デフォルトの名無しさん
2010/10/31(日) 14:39:060522デフォルトの名無しさん
2010/10/31(日) 14:53:38横に長いコードもイヤだけどまだ許せる。
0523デフォルトの名無しさん
2010/10/31(日) 15:01:330524デフォルトの名無しさん
2010/10/31(日) 15:02:26逆じゃね?普通
エディタ何使ってる?
0525デフォルトの名無しさん
2010/10/31(日) 15:02:580526デフォルトの名無しさん
2010/10/31(日) 15:22:540527デフォルトの名無しさん
2010/10/31(日) 15:33:240528デフォルトの名無しさん
2010/10/31(日) 15:37:40横の長さはエディタの自動改行に任せる
この自然言語風の書き方意外と読み易いけど誰も賛同してくれない
0529デフォルトの名無しさん
2010/10/31(日) 15:40:59これ以上解像度上げるとフォントが小さくなりすぎて見難くなるが
0530デフォルトの名無しさん
2010/10/31(日) 15:50:13さすがに全部はみ出てたらイヤだけどそんなのないし
0531デフォルトの名無しさん
2010/10/31(日) 17:43:310532デフォルトの名無しさん
2010/10/31(日) 21:51:53カッコ付きは非PODとPODで挙動が異なる
非POD・・・カッコ無しは不定値が入る、カッコありは0で初期化
POD・・・どちらも同じ意味
これもFAQになってきたな
0533デフォルトの名無しさん
2010/10/31(日) 22:02:14逆じゃないか?
0534デフォルトの名無しさん
2010/10/31(日) 22:18:48あ、ごめん逆だった
0535デフォルトの名無しさん
2010/11/01(月) 12:18:39検索用に書き直してまとめ。
--
new Hoge(), new Hoge;は何が違うんですか?
カッコ付きは非PODとPODで挙動が異なる
POD・・・カッコ無しは不定値が入る、カッコありは0で初期化
非POD・・・どちらも同じ意味
これもFAQになってきたな
--
0536デフォルトの名無しさん
2010/11/01(月) 12:22:32void merge(int data1[], int n1, int data2[], int n2, int data3[]){
int index1, index2, index3, i;
index1 = index2 = index3 = 0;
printf("merge_sort\n");
while(index1 < n1 || index2 < n2){
if(index1 == n1){
for(i=0; i<n2-index2; i++){
data3[index3+i] = data2[index2+i];}
break;}
if(index2 == n2){
for(i=0; i<n1-index1; i++){
data3[index3+i] = data1[index1+i];}
break; }
// data3[index3] に値を代入したい//
for (i=0; i<(2*N) ;i++)
printf("%d,", data3[i]);
printf("\n");}
0537デフォルトの名無しさん
2010/11/01(月) 12:38:46なんか文章とか絵とかで解説されてるサイトを見るといいよ
マージソートは理屈がかなり簡単なソートだからすぐわかるだろう
0538デフォルトの名無しさん
2010/11/01(月) 13:27:33http://users.rcn.com/jcoplien/Patterns/C++Idioms/EuroPLoP98.html#PromoteAndAdd
上記のウェブサイトのソースコードでconst参照仮引数に代入しているように
みえるのですが良くわかりません。
ちなみにisA関数の意味もcomplexExemplarの意味もわかりません。
教えてください。
0539デフォルトの名無しさん
2010/11/01(月) 13:39:14770 デフォルトの名無しさん [] 2010/10/31(日) 11:52:29 ID: Be:
初歩的な質問なんですが
http://users.rcn.com/jcoplien/Patterns/C++Idioms/EuroPLoP98.html#PromoteAndAdd
上記のウェブサイトのソースコードでconst参照仮引数に代入しているように
みえるのですが良くわかりません。
ちなみにisA関数の意味もcomplexExemplarの意味もわかりません。
教えてください。
0540デフォルトの名無しさん
2010/11/01(月) 13:48:18別人っす。
0541デフォルトの名無しさん
2010/11/01(月) 13:53:170542デフォルトの名無しさん
2010/11/01(月) 13:56:360543デフォルトの名無しさん
2010/11/01(月) 14:18:030544デフォルトの名無しさん
2010/11/01(月) 14:24:25photoshopみたいな拡大縮小機能を付けたいけど
それをするのにはc++でおkですか?
OKならまず何が必要ですか?
参考書とかソフトとか何を買えばいいですか?
プログラムはプラスとかビジュアルの付いていないC言語で
ifやforとかで条件分岐させてぐるぐる回すとかの
プログラムの作り方の基本的な部分しか分かりません。
↓mypaintのコード概要
http://wiki.mypaint.info/index.php?title=Documentation/ForDevelopers
0545デフォルトの名無しさん
2010/11/01(月) 14:27:43ありがとうございます、解決しました
0546デフォルトの名無しさん
2010/11/01(月) 14:49:14>Mostly written in Python with PyGTK
と書いてあるんだから、Pythonだろ。
つーか、その程度の英語も読めないようなら無理だと思うぞ。
それとcanvasのzoom機能はあるらしいが、それでは不充分なのか?
0547デフォルトの名無しさん
2010/11/01(月) 14:51:230548デフォルトの名無しさん
2010/11/01(月) 14:57:18http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%9D%E3%82%B9%E3%83%88#.E3.83.9E.E3.83.8A.E3.83.BC.E9.81.95.E5.8F.8D.E3.81.AE.E7.90.86.E7.94.B1
0549デフォルトの名無しさん
2010/11/01(月) 14:59:28同じことを何度も何度も訊かれたら鬱陶しい
0550デフォルトの名無しさん
2010/11/01(月) 15:07:420551デフォルトの名無しさん
2010/11/01(月) 15:10:480552デフォルトの名無しさん
2010/11/01(月) 15:16:38なんでもマルチは悪いと考えるのは思考停止のなにものでもないよ。
投稿されてから一日たっているのや別スレでスルーされていいるのや別人がコピペしているのを考慮すると
これは許されるマルチだと思う。
0553デフォルトの名無しさん
2010/11/01(月) 15:18:140554デフォルトの名無しさん
2010/11/01(月) 15:21:410555デフォルトの名無しさん
2010/11/01(月) 15:21:44君はプログラミングに向いてないよwww
他逝きなww
0556デフォルトの名無しさん
2010/11/01(月) 15:22:520557デフォルトの名無しさん
2010/11/01(月) 15:28:06被害者面するな
0558デフォルトの名無しさん
2010/11/01(月) 15:28:230559デフォルトの名無しさん
2010/11/01(月) 15:31:46そういう時はスレが落ち着いてから催促すればいいんじゃない
まあ俺はスレ遡ってまで回答しないけど
0560デフォルトの名無しさん
2010/11/01(月) 15:33:57人に聞く行為と人に知らせる行為を一緒にするなよ
頭おかしいの?
0561デフォルトの名無しさん
2010/11/01(月) 15:35:570562デフォルトの名無しさん
2010/11/01(月) 15:40:330563デフォルトの名無しさん
2010/11/01(月) 15:41:57実生活のストレス解消の場として揚げ足取りを楽しんでいるのだろう
0564デフォルトの名無しさん
2010/11/01(月) 15:42:25いくらかそういう馬鹿げた質問してる自覚はあるんだ
0565デフォルトの名無しさん
2010/11/01(月) 15:44:470566デフォルトの名無しさん
2010/11/01(月) 15:45:02そういう奴は正当な批判も揚げ足取りと思い込んで暴れる。
0567デフォルトの名無しさん
2010/11/01(月) 15:46:37質問者じゃなきゃこんな文句言わねーだろ
0568デフォルトの名無しさん
2010/11/01(月) 15:48:350569デフォルトの名無しさん
2010/11/01(月) 15:49:310570デフォルトの名無しさん
2010/11/01(月) 15:57:48それだと高等な質問ならマルチしてもいいってことになるぞ
どうしてマルチが嫌われるか分かってないのにマルチ叩くのもどうかと思うよ
0571デフォルトの名無しさん
2010/11/01(月) 15:59:33マルチするまでもなく普通に回答が返ってくるからじゃね?
0572デフォルトの名無しさん
2010/11/01(月) 16:01:32英語よめないからwwww
0573デフォルトの名無しさん
2010/11/01(月) 16:11:17議論中なうじゃなかったら
スルー = 日本語が支離滅裂、質問内容が明晰でない
数レス上で同じ内容に答えている、態度が生意気、テンプレを使用していない
みたいな質問に答えたくなくなる何かがあるんだろうよ
それを、スルーするのが悪いんだろみたいに逆ギレされても困る
自分は質問者で回答者の顔色を伺ってる意識を持てよ
高飛車なやつに応えたいなんて思うやつは皆無
0574デフォルトの名無しさん
2010/11/01(月) 16:15:370575デフォルトの名無しさん
2010/11/01(月) 16:15:59どこを縦読み?
0576デフォルトの名無しさん
2010/11/01(月) 16:18:240577デフォルトの名無しさん
2010/11/01(月) 16:21:02アホな質問をする奴は自分の質問がアホな質問だなんて思ってないだろうから、
答えが返ってこなければ>>538みたいに平気でマルチするだろ
しっかりとマルチ=ダメというアホでも分かる境界線を引かないとダメ
0578デフォルトの名無しさん
2010/11/01(月) 16:22:03だから何?
馬鹿だから見逃せっての?
原因が突き止められない馬鹿だからマルチさせてくださいってこと?
0579デフォルトの名無しさん
2010/11/01(月) 16:28:49原因が突き止められない馬鹿に原因を突き止めなさいって長文レスするのが意味ある事だと思ってるの?
0580デフォルトの名無しさん
2010/11/01(月) 16:33:14喧嘩して無意味にスレを消費するより
1レス消費するだけでわかっていてもわざと教えない質問の
答えを書き込んだ方が得だぞ(核爆)
0581デフォルトの名無しさん
2010/11/01(月) 16:34:09原因を突き止めなさいっつてんじゃねーよ
原因突き止めるのが普通なんだからマルチすんなっつってんだよ
0582デフォルトの名無しさん
2010/11/01(月) 16:35:39誰がマルチにこたえるかバーカ^^
0583デフォルトの名無しさん
2010/11/01(月) 16:44:24マルチポストしても何もいいことがないとわかっただろう
次からは気をつけろよ
0584デフォルトの名無しさん
2010/11/01(月) 16:44:55マルチすんなってのは同意だが、>>573はどうみても原因を突き止めろよと言ってます
わざわざ原因として考えられる要因まで列挙してる心優しいレスです
0585デフォルトの名無しさん
2010/11/01(月) 16:49:33堂々とマルチポストする奴の方が好きだ
0586デフォルトの名無しさん
2010/11/01(月) 16:49:570587デフォルトの名無しさん
2010/11/01(月) 16:56:570588デフォルトの名無しさん
2010/11/01(月) 17:06:320589デフォルトの名無しさん
2010/11/01(月) 17:10:59ネタではなく真面目に素直に難しすぎてわかりませんと言える
ような人こそ素晴らしいと思うんだよ。
0590デフォルトの名無しさん
2010/11/01(月) 17:12:15マルチは悪びれる様子もなきゃ自覚もない
0591デフォルトの名無しさん
2010/11/01(月) 17:22:18素直にわかりませんと発言する人はいないと思うよ
0592デフォルトの名無しさん
2010/11/01(月) 17:28:10もしかしたらみんなわからなくて
未解決問題の一つかもしれないわけだし。
0593デフォルトの名無しさん
2010/11/01(月) 17:41:23自分には分からないって程度だとわざわざ分かりませんとは書かないな
このスレではそんな問題にお目にかかったことはないが、
サードパーティのライブラリ系のスレとかだと稀によくある話だ
0594デフォルトの名無しさん
2010/11/01(月) 18:03:310595デフォルトの名無しさん
2010/11/01(月) 18:07:350596デフォルトの名無しさん
2010/11/01(月) 18:35:13ttp://users.rcn.com/jcoplien/Patterns/C++Idioms/EuroPLoP98.html#PromoteAndAdd
0598484
2010/11/01(月) 21:01:05皆さんの指摘を見て,よくよくソースを見直してみると,ちょっとしたtypoでおかしなエラーが出ていたことが原因でした.
修正すると,そのままconst int x = 10;で望み通りの結果が得られました.スレ汚しになってしまい,すみません.
こんな稚拙な質問にも丁寧に答えて頂いてありがとうございました.
0599デフォルトの名無しさん
2010/11/01(月) 22:30:44思考停止ダメゼッタイとか頭が凝り固まってるのを露呈してる
まあ2chでは基本ご法度ではあるだろうが
0600デフォルトの名無しさん
2010/11/02(火) 00:13:48うぉぉありがとうございます
pythonスレ行きます。
zoom機能じゃなくて画像を変形する感じの機能です。
0601デフォルトの名無しさん
2010/11/02(火) 00:45:49以下のように、ファイル名を受け取って、fopenを使ってそのファイルを開き、その内容を配列にしまって出力する関数があったとします。
void hoge(char *file_name){
// ファイルオープン
fp = fopen(file_name, "rb");
// ファイルサイズの所得
fseek(fp, 0, SEEK_END);
sz = ftell(fp);
fseek(fp, 0, SEEK_SET);
// メモリを確保してファイル読み込み
myPtx = (char*)malloc(sz);
fread(myPtx, 1, sz, fp)
fclose(fp);
printf("%s\n", myPtx);
free(myPtx);
}
これに対して別のテキストファイル名を指定して二階呼び出したところ、二回目の出力がおかしくなってしまいます。
具体的には、出力の最後に"数字の羅列(一回目のファイルの内容?)+文字化け文字"がくっついてしまいます。
サイズが大きいファイル→サイズが小さいファイルと呼び出せばこのようなエラーは起きません。
メモリ開放はしっかりやってるつもりなのですが、何がおかしいのでしょうか?
0602デフォルトの名無しさん
2010/11/02(火) 01:42:52myPtxの指す文字列に\0のヌル文字が格納されてるか確認してみてはどうだろう
char str[1000];とかにコピーすればデバッガで簡単に見れる
0603デフォルトの名無しさん
2010/11/02(火) 01:48:31テキストファイルの場合
ftellのサイズをfseek以外に使うのは未定義のはず
fgetposでやってみたら?
0604デフォルトの名無しさん
2010/11/02(火) 10:23:30読み込むのはサイズ指定していてナル終端文字列になっていないのだから、そのまま%sで出力しちゃダメ。
printf("%.*s\n", sz, myPtx)として味噌。
0605デフォルトの名無しさん
2010/11/02(火) 23:13:010606デフォルトの名無しさん
2010/11/02(火) 23:20:260607デフォルトの名無しさん
2010/11/02(火) 23:21:320608デフォルトの名無しさん
2010/11/02(火) 23:31:11試しにどっちかの方法で書いてみて、途中であーなんかこっちは難しそうだと思ったらもう片方にしてみるとかでもいいと思います
0609デフォルトの名無しさん
2010/11/02(火) 23:34:070610デフォルトの名無しさん
2010/11/02(火) 23:37:210611デフォルトの名無しさん
2010/11/02(火) 23:41:24最大で15通り、碁盤上下左右端付近ならそれ以下
たいした手間じゃないでしょ
0612デフォルトの名無しさん
2010/11/03(水) 00:11:520613デフォルトの名無しさん
2010/11/03(水) 00:13:380614デフォルトの名無しさん
2010/11/03(水) 00:15:57答えも意味不明だな。
0615デフォルトの名無しさん
2010/11/03(水) 00:20:400616デフォルトの名無しさん
2010/11/03(水) 07:56:43ありがとうございます
まずfgetposですが、ftellと同じ結果でした
次に配列を用意してデバッグ中に見てみると、szから少し進んだところにNULL文字がありました
szからNULLまでは文字化けした文字で埋められていました
szにはNULL文字が含まれないようです
なので、mallocのときにsz+1分だけ確保して、最後にNULL文字をいれることで解決しました
どうもありがとうございました
0617デフォルトの名無しさん
2010/11/03(水) 22:54:50c++でstringの配列はどうやって作るんですか?
0618デフォルトの名無しさん
2010/11/03(水) 23:01:13string array[];
0619デフォルトの名無しさん
2010/11/03(水) 23:08:59感謝
0620デフォルトの名無しさん
2010/11/04(木) 03:39:27このコードの解説をしていただけませんか?
0621デフォルトの名無しさん
2010/11/04(木) 04:02:02半径rの円を描く時のコード
角度0.02πラジアンごと点の座標を1回転分出力してる
っていうかこれコード間違っててコンパイルできねぇ
0622デフォルトの名無しさん
2010/11/04(木) 04:08:46・もし様々なことに目をつぶってどういうプログラムかを知りたいなら
→半径1の円周上のxy座標を角度0.02πradごとにx軸から画面表示する
・もし様々な突っ込みどころについてなら
→二行目の時点でコードを投げ捨てる
0623デフォルトの名無しさん
2010/11/04(木) 05:53:012行目ワロタ
0624デフォルトの名無しさん
2010/11/04(木) 06:02:48つまりエロゲの開発コードだよ
0625デフォルトの名無しさん
2010/11/04(木) 06:09:060626デフォルトの名無しさん
2010/11/04(木) 06:12:58(´・ω`・)
0627デフォルトの名無しさん
2010/11/04(木) 07:31:31というかコレスタッフが書いたのか?
0628デフォルトの名無しさん
2010/11/04(木) 09:44:42全く分からない奴が、どっかから手動でコピペしたと考えるのが妥当だろうな
紙媒体から手打ちで写したんじゃないかしら
0629デフォルトの名無しさん
2010/11/04(木) 10:16:04そして敢え無く無視される>604。出力が目的なら、無駄に1バイト確保する必要なんてないのに。
0630デフォルトの名無しさん
2010/11/04(木) 10:29:260631デフォルトの名無しさん
2010/11/04(木) 10:35:520632デフォルトの名無しさん
2010/11/04(木) 11:21:05ttp://www.esa.c.u-tokyo.ac.jp/ujis2dir/200606_01.pdf
0633デフォルトの名無しさん
2010/11/04(木) 14:11:19コンパイルエラーわろたwww
0634デフォルトの名無しさん
2010/11/04(木) 14:50:390635デフォルトの名無しさん
2010/11/04(木) 15:02:20コンパイル出来るかどうかなんて
どんなコンパイラーを使うかどうかが決まってないと意味無いと思う。
もっとマジレスするとテレビの背景として使うソースコードが
コンパイル出来るかどうかなんてどうでも良い。
0636デフォルトの名無しさん
2010/11/04(木) 15:45:37#include <studio.h>
そのコードで正常にコンパイルできるコンパイラは使いたくない
0637デフォルトの名無しさん
2010/11/04(木) 15:58:120638デフォルトの名無しさん
2010/11/04(木) 16:06:190639デフォルトの名無しさん
2010/11/04(木) 17:07:330640デフォルトの名無しさん
2010/11/04(木) 17:23:200641デフォルトの名無しさん
2010/11/04(木) 18:59:440642デフォルトの名無しさん
2010/11/04(木) 19:18:510643デフォルトの名無しさん
2010/11/04(木) 19:21:060644デフォルトの名無しさん
2010/11/04(木) 20:31:35番組スタッフが適当に作ったんだろうな。
0645デフォルトの名無しさん
2010/11/04(木) 20:44:33気にしたら負けだと思う
0646デフォルトの名無しさん
2010/11/04(木) 20:48:09わざわざ手打ちしたんだろうな。
ほほえましいタイポから考えると。
0647デフォルトの名無しさん
2010/11/05(金) 03:16:480648デフォルトの名無しさん
2010/11/05(金) 04:56:500649デフォルトの名無しさん
2010/11/05(金) 06:08:260650デフォルトの名無しさん
2010/11/05(金) 09:39:110651デフォルトの名無しさん
2010/11/05(金) 13:56:06関数名に至っては開発当時の環境の貧弱さから6文字までしか
識別子は認識せず後は無視するようになっていた
そのためCの関数やヘッダーはあのような妙な短縮形が多いんだろう
特にstring.hの関数名の分かりにくさは最悪
0652デフォルトの名無しさん
2010/11/05(金) 18:15:18正の整数をキーボードから入力し、1からその整数までの和を計算し、出力するプログラムをfor文を用いて書け
というものなのですが、どのように書けばいいでしょうか。
0653デフォルトの名無しさん
2010/11/05(金) 18:18:230654デフォルトの名無しさん
2010/11/05(金) 18:51:23int* p;
書き方が違うだけで同じ意味でしょうか?
0655デフォルトの名無しさん
2010/11/05(金) 18:53:270656デフォルトの名無しさん
2010/11/05(金) 18:54:49int * p;
などのように書いてもいいぞ
0657デフォルトの名無しさん
2010/11/05(金) 18:57:40こう書くのが最も優秀です
0659デフォルトの名無しさん
2010/11/05(金) 19:11:00int *p; これは*pについて。*pはintを入れるんですよってこと
int* p; これはpについて。pはint*を入れるんですよってこと
int*p;
int * p;
これらは最初の2つのどちらとも取れる手抜き書き方
つまり、読み手に任せるよってこと。
0660デフォルトの名無しさん
2010/11/05(金) 19:21:17例えば、配列の中の最小値を求めて、その最小値を配列の中の値の一つに上書きする
といった感じです。
お願いします。
0661デフォルトの名無しさん
2010/11/05(金) 19:35:21それから配列の残りの値を順に見ていって、覚えた変数の値と今見てる配列の値の小さい方を変数に覚えます
それを配列の最後まで繰り返したら、覚えてる変数の値が配列の中の最小値ですので、
その最小値を配列の中に好きなように上書きすればいいです
0662デフォルトの名無しさん
2010/11/05(金) 19:42:40http://codepad.org/0AodnlXs
0663デフォルトの名無しさん
2010/11/05(金) 19:42:430664デフォルトの名無しさん
2010/11/05(金) 19:48:54質問間違えましたorz
最小値を上書きするのではなく、その最小値に+1した値を、でした。
申し訳ないです。。。
0665デフォルトの名無しさん
2010/11/05(金) 19:53:06規制で携帯から失礼してますorz
>>662
こんなページあるんですね。分かりやすいです。
ありがとうございます。
0666デフォルトの名無しさん
2010/11/05(金) 20:19:10嘘教えるな。その説明はint* p,q;で破綻する。
0667デフォルトの名無しさん
2010/11/05(金) 21:39:213KBのBYTE配列に (※4バイトずつ利用)
変数(int型とfloat型)5〜20個(毎回一定ではない個数)を1セット。
それを3〜30セット入れています。
毎回一定ではない個数なので、
あらゆる間仕切りに「特定の整数」を使いたいのですが、
floatがその「特定の整数」と同じビットの並びを起こさないかが不安でなりません。
また、同じ並びを検出する事はできるのですが、
下手にfloatの値を動かすと誤差では済まない事になったり、
別の「特定の整数」と化す恐れがないかという不安が・・
どなたか、何か良い回避方法があれば教えて頂けますと幸いです・・orz
0668デフォルトの名無しさん
2010/11/05(金) 21:42:540669デフォルトの名無しさん
2010/11/05(金) 21:45:190670デフォルトの名無しさん
2010/11/05(金) 22:42:040671デフォルトの名無しさん
2010/11/05(金) 22:43:520672デフォルトの名無しさん
2010/11/05(金) 22:57:51intとfloatがグチャグチャに混在すんの?
0673デフォルトの名無しさん
2010/11/05(金) 23:45:44理由を考えてみたのですが良く分からなかったので初歩的な質問ですがお願いします。
エラー E2312 oko.cpp 20: 'Basic::height' は曖昧でない基本クラス 'Human' ではない(関数 Human::Human() )
エラー E2312 oko.cpp 20: 'Basic::weight' は曖昧でない基本クラス 'Human' ではない(関数 Human::Human() )
http://codepad.org/gxrFs0NE
0674デフォルトの名無しさん
2010/11/05(金) 23:55:39派生クラスのコンストラクタで基底クラスのメンバ変数は弄れません
基底の方のコンストラクタで設定するがよろし
0675デフォルトの名無しさん
2010/11/06(土) 00:01:15const int N=hoge;
for(int k=0;k<N;++k) {
cout << "a" << endl;
(中略)
cout << "b" << endl;
}
のように書いたときに,
「b」と出力したきりプログラムがフリーズするということが起きています.
中略部分は事情があって具体的にはここには書けませんが,少なくともカウンタkに手をつけるような処理はしていません.
おおまかには中略部分で反復計算をやって,条件をみたしたらbreak,Nを最大反復回数とする処理です.
色々と経過を吐かせると,もちろん脱出条件は満たしてはおらず,次反復への処理を終えて,
次のループに進もうとするまさにそのときにフリーズしてしまっています.
この場合,どのようにしてデバッグするのが良いでしょうか.
0676デフォルトの名無しさん
2010/11/06(土) 00:02:00基底クラスの方のコンストラクタで何もしないように定義して後から実行される派生クラスのコンストラクタで
メンバ変数を初期化しようとしていましたが良く分かりました。
ありがとうございました。
0677675
2010/11/06(土) 00:04:33コンパイラはGCC,Intelコンパイラ両方を試し,両方共全く同じ段階でストップします.
OSはLinux,最適化は-O0,-O1, -O2, -Osで再現します.
0678デフォルトの名無しさん
2010/11/06(土) 00:05:09bの後でフリーズするなら
そのあと1行ずつ実行すりゃわかるだろ
0679デフォルトの名無しさん
2010/11/06(土) 00:07:070680デフォルトの名無しさん
2010/11/06(土) 00:08:270681デフォルトの名無しさん
2010/11/06(土) 00:46:37何度も質問すみません。
もし派生クラスから基底クラスのメンバ変数を変更したいならば
派生クラスで初期化の関数を作る方法ぐらいなんでしょうか?
0682デフォルトの名無しさん
2010/11/06(土) 00:56:370683デフォルトの名無しさん
2010/11/06(土) 00:58:49そうですねw
出来たらコンストラクタみたいに実装したかったので
0684デフォルトの名無しさん
2010/11/06(土) 01:00:34コンストラクタで代入してもいいのよ
0685デフォルトの名無しさん
2010/11/06(土) 01:06:35初期化ばっかり考えてたので全く頭に浮かびませんでしたw
代入の場合は派生クラスのコンストラクタでも基底クラスの値は変更できるんですね。
回答ありがとうございました。
0686デフォルトの名無しさん
2010/11/06(土) 02:31:23http://codepad.org/HhGsSayU
基底クラスのメンバ変数をコンストラクタ形式で初期化する事はできない
引数付きのコンストラクタで初期化する事
0687デフォルトの名無しさん
2010/11/06(土) 03:46:47すでにopenしてるポートを再度openしようとしたら例外もしくはassertしたいのですが
対象のポートが使用済みかどうかを判別する方法はないでしょうか?
0688デフォルトの名無しさん
2010/11/06(土) 16:09:54関数の前に
__declspec(dllexport)、__declspec(dllimport)
を付けて
スタティックライブラリのときは、消す必要がある?(消さないとそのライブラリを使った時リンクエラーがでた)
つまり#defineでダイナミックライブラリとスタティックライブラリを分ける必要がるの?
0689デフォルトの名無しさん
2010/11/06(土) 16:10:01double x = 1;
if( tan(sita) * x == c[0][1] ){
printf("hoge");
}
tan(sita) は1になるようにしてあります。
実行してみると「hoge」と出力されません。
判定式には三角関数を使ってはいけないなどあるのでしょうか?
0690デフォルトの名無しさん
2010/11/06(土) 16:19:26そんなことはありませんが、 double 型の値には計算誤差が含まれるものですので
== で比較した場合は、ぴったり完全に誤差なく 1 が得られたときしか出力されません
double は 17 桁くらいの精度がありますから、
printf("%.17f\n", tan(sita) * x);
などとしていちど値を確認してみてください
あとどうでもいい話ですが、θは sita じゃなくて theta です
0691デフォルトの名無しさん
2010/11/06(土) 16:30:39double c[1][2];
c[0][1] = 1;
こうじゃなくて大丈夫なのか?
0692デフォルトの名無しさん
2010/11/06(土) 16:55:29はい
0693デフォルトの名無しさん
2010/11/06(土) 16:58:59生成物が変わるんだから宣言変えなきゃダメだろう。
0694デフォルトの名無しさん
2010/11/06(土) 17:07:19不動小数点の=比較は誤差を考えて、
if( abs(A-B) < 10^-6) とかやった記憶がある。
0695デフォルトの名無しさん
2010/11/06(土) 18:36:21ありがとうございます。
その方法で解決できました。
0696デフォルトの名無しさん
2010/11/07(日) 11:19:500697デフォルトの名無しさん
2010/11/07(日) 11:36:190698デフォルトの名無しさん
2010/11/07(日) 12:12:59ありがとうございます。
0699デフォルトの名無しさん
2010/11/07(日) 23:51:15WM_LBUTTONDOWNではなく、GetKeyStateのようなこちらから確認する方法です
お願いします。
0700デフォルトの名無しさん
2010/11/07(日) 23:55:40GetKeyState(VK_LBUTTON)
0701デフォルトの名無しさん
2010/11/08(月) 00:25:28ああ!それで大丈夫でしたか!
ありがとうございます。助かりました。
0702デフォルトの名無しさん
2010/11/08(月) 00:26:10おお!それで大丈夫でしたか!
ありがとうございます。助かりました。
0703デフォルトの名無しさん
2010/11/08(月) 00:27:330704デフォルトの名無しさん
2010/11/08(月) 00:58:270705デフォルトの名無しさん
2010/11/08(月) 00:58:440706デフォルトの名無しさん
2010/11/08(月) 01:04:200707デフォルトの名無しさん
2010/11/08(月) 08:28:040708デフォルトの名無しさん
2010/11/08(月) 11:03:580709デフォルトの名無しさん
2010/11/08(月) 12:55:57それでタグみたいなやつを作るには
class A{};
static const int A=1;
typedef int A;
上記のうちのどれが最適ですか?
ちなみにtypedefはint Aとint Bはべつものになりますか?
0710デフォルトの名無しさん
2010/11/08(月) 13:03:220711デフォルトの名無しさん
2010/11/08(月) 13:28:260712デフォルトの名無しさん
2010/11/08(月) 16:25:51{
if(no[i] < i_min)
{
i_min = no[i];
a = i;
}
no[a] = i_min+10;
これを10回繰り返したいのですが、どうすればいいんでしょうか?
具体的には配列の最小値を選び、その最小値に+10をして、もとの値に入れる
といった動作です
お願いいたします。
0713デフォルトの名無しさん
2010/11/08(月) 16:45:500714デフォルトの名無しさん
2010/11/08(月) 16:50:35int j;
for ( j=0 ; j<10 ; j++ ){
i_min = no[0] ;
a = 0 ;
for(i=1;i<10;i++)
{
if(no[i] < i_min)
{
i_min = no[i];
a = i;
}
}
no[a] = i_min+10;
}
0715デフォルトの名無しさん
2010/11/10(水) 19:11:42#define A_ENABLE 0x00000001
#define B_ENABLE 0x00000002
#define C_ENABLE 0x00000004
#define D_ENABLE 0x00000008
みたいに書いている同僚がいたので
#define A_ENABLE (1 << 0)
#define B_ENABLE (1 << 1)
#define C_ENABLE (1 << 2)
#define D_ENABLE (1 << 3)
のほうがいいと思ったので指摘したんだけど、こんなものは会社によって
書き方のルールは違うからどっちでもいいみたいなことを言われました。
マイコン用のライブラリとかでは後者の書き方をよくみかけるし、
ビットフラグだということがわかりやすいので、後者で統一しようと
考えているんだけど、おかしいですかね。。。?
0716デフォルトの名無しさん
2010/11/10(水) 19:14:15どっちでもいいし、デバッガで見たときなどに計算しなくてすむぶん上の方がいいという考え方もありうる。
0717デフォルトの名無しさん
2010/11/10(水) 19:28:40ただ、デバッガでみるときはビットがたっているか、いないかで確認するので
表示は16進表記じゃなく、2進数表記に切り替えると思いますがどうでしょうか?
やっぱりもともとビット単位で表現するものをわざわざ16進表記にするのは
余計な脳内変換が必要なのでそうする理由がよくわからないのですが、ほかに
デバッガでの表示が容易という点以外に何か利点はありますでしょうか?
0718デフォルトの名無しさん
2010/11/10(水) 19:58:250719デフォルトの名無しさん
2010/11/10(水) 21:41:060720デフォルトの名無しさん
2010/11/10(水) 22:54:071ビットだけ立つならそれでもいいが、複数立てる場合は前者が直感的にいい。
もちろん、頭の中で瞬時にビットのイメージがわくからね
0721デフォルトの名無しさん
2010/11/10(水) 23:22:22どういうこと?マクロの使用箇所は関係ないと思うが。
0722デフォルトの名無しさん
2010/11/10(水) 23:42:21そんなビミョーこと指摘しても認めるわけないだろ。
マニュアルに書いてあるようなことでも絶対認めないような
連中とかゴロゴロいるくらいだし。
「SQLでbetween禁止な。インデックスがきかないから」
↓
「(各種証拠をみせて)インデックスききますよ」
↓
「いままでずっとそうだから、とにかくbetwennは禁止だ」
みたいな。
0723デフォルトの名無しさん
2010/11/10(水) 23:53:48まあ指摘が細かいことはわかっているんだけど、こういう糞コードで
どんどん汚染されていくのを黙ってみてられないんだよね・・・
0724デフォルトの名無しさん
2010/11/11(木) 00:23:30bit立てるのにbit長キメウチは汎用性ないからな
でも、A_ENABLE ってのはちょっとセンスないな
#define BIT_0 (1 << 0)
#define BIT_1 (1 << 1)
#define BIT_2 (1 << 2)
#define BIT_3 (1 << 3)
....
とか位にしてくれ
BIT_0 || BIT_3 とかするときにどのbitが建っているか解りやすい
0725デフォルトの名無しさん
2010/11/11(木) 00:26:570726デフォルトの名無しさん
2010/11/11(木) 00:45:260727デフォルトの名無しさん
2010/11/11(木) 00:48:04#define B_ENABLE (1 << 32)
intが32ビット以下のときAはlong long等になるがBはint 0
シフトするなら環境依存の有効ビット幅を意識せずにはいられない
0728デフォルトの名無しさん
2010/11/11(木) 01:03:21だって日本ではドカタと呼ばれている底辺職種の人たちだよ
>>723 だから、細かいことはあまり気にするな
0729デフォルトの名無しさん
2010/11/11(木) 01:05:110730デフォルトの名無しさん
2010/11/11(木) 01:22:59プログラマに低脳多いから、立場が低いじゃないか
わが社の主業務は人貸しですってとこ多いし。売買の対象となる人の立場が高いなんてありえないよ。
自社製品を売って金を稼ぐ会社か元受に近い会社じゃないと、プログラマ==ドカタって扱いになるんじゃないか
0731デフォルトの名無しさん
2010/11/11(木) 07:44:06いなくなれば困るなんてのは立場には関係ないわな
0732デフォルトの名無しさん
2010/11/11(木) 12:54:09土方は定年まで土方だよ。
0733デフォルトの名無しさん
2010/11/11(木) 14:30:22関数の引数としてポインタを利用する場合とグローバル変数を
用いる場合ではどのような違いがありますでしょうか?
0734デフォルトの名無しさん
2010/11/11(木) 14:30:220735デフォルトの名無しさん
2010/11/11(木) 14:34:270736デフォルトの名無しさん
2010/11/11(木) 15:14:440737デフォルトの名無しさん
2010/11/11(木) 15:28:410738デフォルトの名無しさん
2010/11/11(木) 15:40:55仕様をいちいち客に問い合わせるか、
仕様書を見るかの違い。
0739z
2010/11/11(木) 16:54:20{if-else文} 身長と体重のデータを読み込み、下の定義から体型を判定するプログラムを作成せよ。
定 義:身長h(cm),体重w(Kg)とすると
w < (h-95)*0.82 やせすぎ(SLIM)
w > (h-95)*1.10 ふとりすぎ(FAT)
その中間 正常(NORMAL)
0740デフォルトの名無しさん
2010/11/11(木) 16:56:190741デフォルトの名無しさん
2010/11/11(木) 17:41:13誤差らしい
0742デフォルトの名無しさん
2010/11/12(金) 11:29:00最近のコンパイラはstaticな関数はどんどんインライン展開してしまうのでスタックに積むコストはなくなる場合が多くなります。
また、グローバル変数はCPUキャッシュの外にある場合があるので、アクセスコストが馬鹿にならない場合があります。
そんなことよりも、それが問題になるようなレベルの高速化をする前にやることは腐るほどあるので、保守性を上げる為に
どうしても必要がある場合以外はグローバル変数は禁止の方向で。まして、externで外部変数を参照するなんて以ての外。
0743デフォルトの名無しさん
2010/11/12(金) 12:15:27マルチスレッド化に際し、大きな障害になる。
0744デフォルトの名無しさん
2010/11/12(金) 16:14:210745デフォルトの名無しさん
2010/11/13(土) 08:38:18俺たちの代わりに試行錯誤してくれたんだと考えれば悲しくない。
0746デフォルトの名無しさん
2010/11/13(土) 19:14:16外部ファイルで持たせてあるデータのロードに失敗した時に、
エラーメッセージを表示して強制終了したいのですが、
MessageBox()関数には引数として、hwndが必要です。
クラス設計を進めていくと、わざわざ全てのクラスのコンストラクタに
hwndを渡すのが煩わしいのですが、他の方法はないでしょうか?
hwndをグローバル変数で持たせる、という方法も思いついたのですが、
エラーメッセージのために、普通、そこまでするものでしょうか?
ちなみに、_ASSERT_EXPR()は、リリース時には動かないので、除外してください
0747デフォルトの名無しさん
2010/11/13(土) 19:50:190748デフォルトの名無しさん
2010/11/13(土) 19:57:00言わんとするところは分かるが根本的な設計が間違ってる
ウィンドウハンドルみたいなハード依存部分を
グローバルスコープで参照したり各クラスオブジェクトに渡すのは良くない
ハードに依存する部分としない部分はキッチリ分けないと再利用性が無くなる
あと、その言い方だとたぶん
各オブジェクトごとにファイルを読んでインスタンスを生成するような設計っぽいけど
それだと同じファイルを使うオブジェクトを複数生成するときに
オブジェクトの数だけ読み込みを行わなくならなくならないか?
やるべきことはデータロード部分と各クラスオブジェクトを分離すること
まずデータロードクラスなりを1つ作って
データ読み込みは全てコイツが行う
ウィンドウハンドルもこコイツだけが内部で知ってれば良くて
メッセージ表示等も全てコイツがやる
各クラスオブジェクトはこのデータロードクラスで
読み込んだデータを参照してインスタンスを生成し
それ自身はファイルの読み込みはしないようにする
0749デフォルトの名無しさん
2010/11/13(土) 19:59:000750デフォルトの名無しさん
2010/11/13(土) 20:11:08便乗して質問してしまうが「データの参照」って具体的にどうやって書けばいいの?
0751デフォルトの名無しさん
2010/11/13(土) 20:17:36コンストラクタとか関数の引数全てにhwnd渡すぐらいなら、
グローバル変数の方がいい
どうしても気なるなら、staticな変数にhwndを覚えるようなクラスを作って、
メッセージボックス表示をそのクラスで行なうとか
0752デフォルトの名無しさん
2010/11/13(土) 20:22:510753デフォルトの名無しさん
2010/11/13(土) 21:41:33けっこうみんな悩んでるからここで聞いて解決する問題じゃないと思う
0754デフォルトの名無しさん
2010/11/14(日) 09:59:540755デフォルトの名無しさん
2010/11/14(日) 11:12:33>クラス設計を進めていくと、わざわざ全てのクラスのコンストラクタに
>hwndを渡すのが煩わしいのですが、他の方法はないでしょうか?
エラー表示に使わないようなパラメータをコンストラクタで渡していくのは煩わしいし蔵設計がいびつになることは確かにある。
その手の問題は、エラー表示クラスを作って、そのクラスのプライベートstaticメンバー変数にアプリ初期時に
エラー表示に使うウインドウハンドルを設定して置くようにしている。
staticメンバー変数も結局はグローバルなんだけどプライベートstaticメンバー変数であれば、
初期化タイミングがはっきりするし変更不可にもできるし、ただのグローバルよりはマシ。
でもね、ひとつだけいえることはMessageBoxのhWndは0でもOKなんだよ
0756デフォルトの名無しさん
2010/11/14(日) 20:25:590757デフォルトの名無しさん
2010/11/14(日) 21:14:330758デフォルトの名無しさん
2010/11/14(日) 21:28:120759デフォルトの名無しさん
2010/11/14(日) 23:01:28一応スーパープログラマ呼ばわりされてたけど、30過ぎたあたりでクラスチェンジすることなく燃え尽きた。
趣味でコーディングは、するけど…もうSEもプログラマも辞めた。
なにをもってスーパーなのか知らんが、そう呼ばれてた時期が長かったな
納期2週間を2時間、処理で20時間掛かるコードの最適化で6時間まで短縮
ひらめきプログラマなんで同じコードが書けないのが短所かw
0760デフォルトの名無しさん
2010/11/14(日) 23:07:060761デフォルトの名無しさん
2010/11/14(日) 23:10:01「スーパープログラマーくん(笑)」とか呼ばれてたんだろどうせ
0762デフォルトの名無しさん
2010/11/14(日) 23:13:090763デフォルトの名無しさん
2010/11/14(日) 23:13:150764デフォルトの名無しさん
2010/11/14(日) 23:30:400765デフォルトの名無しさん
2010/11/14(日) 23:32:330766デフォルトの名無しさん
2010/11/14(日) 23:48:09\み会行きたくない… orz ……orz /orzorzorzorzorzorzorzorzorzorz
. .: : : : : \ orz orz 彼女にアニオタだってバレ/orzorzorzorzorzorzorzorzorzorz
. .: : : : : : : \ノジョにフられた…… orz … /orzorzorzorzorzorzorzorzorzorz
. . : : : \ …… orz 友達と喧嘩/ ■■■ ■ ■■ ■■■■■
. . .... ..: : ::\orz 女の子のアドレス30件しか /■ ■ .■ ■
Λ_\ ……orz …orz / ■ ■ ■ ■
リア充→ /:彡ミ゛ヽ;\ … 経験人数が一/ .■ .■ ■ ■
/ :::/:: ヽ、ヽ、\ … ∧∧∧∧∧ / ■■■ .■ ■■■■■
/ :::/;;: ヽ ヽ ::l\< 自 >/ orzorzorzorzorzorzorzorzorzorzorz
 ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄< 虐 > orzorzorzorzorzorzorzorzorzorzorz
< 風 >orzorzorzorzorzorzorzorzorzorzorz
―――――――――――< の 自 >――――――――――――
36 名前:学生さんは名前 < 予 慢 > OTL セックスしすぎて…
東大に入って、昨日の駒 < 感 > OTL 彼女が… orz
彼女に運ばれて、今日の < !! > 高学歴なのに… orz
/∨∨∨∨∨\ 友達が… OTL mixiで…
24 名前:学生さんは名前が/ \ 合コンで… orz
彼女から着信あるとマジで/ リア充[ピーーー]よ!\´ OTL イケメンなのに…
連続ですごいかけてくる /∧_∧ ∩ \サークルが… orz
正直しんどいです… /( ;´Д`)ノ______ \ orz 180cm65kgで…
/ (入 ⌒\つ /| \ 女の子が… OTL
427 名前:学生さんは/ ヾヽ /\⌒)/ | \ バイトの…
童貞に戻りたい…orz/ || ⌒| ̄ ̄ ̄| \
0767デフォルトの名無しさん
2010/11/15(月) 00:16:200768デフォルトの名無しさん
2010/11/15(月) 12:06:53その位だとPC換えるか追加して終わりってレベルだから金にならない。
20時間が6分なら200倍だから、そこまでできるのなら金になる。
つーか、高速化で飯喰ってるけど3倍強はコンパイラのご機嫌伺いのレベルだよw
0769デフォルトの名無しさん
2010/11/15(月) 13:30:560770デフォルトの名無しさん
2010/11/15(月) 14:24:230771デフォルトの名無しさん
2010/11/15(月) 14:30:530772デフォルトの名無しさん
2010/11/15(月) 15:37:10というか20時間掛かるプログラムを書いた奴が土方レベルなんだと思うがな
高速化はボトルネックの特定から始まるから面倒な作業だと思うよ。
1日〜2日目なんてtimeGetTimeあたりを仕込んでログとって終わりだろうからな
20時間を6分は無理だろう…(1から作っても設計的に無理だろw)
どっかにSleepでも仕込んであったんなら可能だがなw
昔だけどDBの仕事で故意にSleepが仕込まれていたケースがある。
次の受注でSleep取って高速化しました。とかしたり顔で言うつもりだったのか
0773デフォルトの名無しさん
2010/11/15(月) 15:49:210774デフォルトの名無しさん
2010/11/15(月) 15:58:35Sleep噛ませたら動いた!
ってなったからそのままという可能性も
0775デフォルトの名無しさん
2010/11/15(月) 16:08:56他プロセスから完了の通知が来て、プログラム実行したのは良いけど
そのプロセスがファイルに処理結果を書き出し中で、それを読む俺は…
forで回しながらSleepして待った記憶あるわwww
100回やって駄目だったらタイムアウトとかだったかなぁ…
完了通知はファイル書き終わってから出せと言ったが、相手が韓国人で
通じねえwww
0776デフォルトの名無しさん
2010/11/15(月) 17:10:06FOR I=0 TO 1000000:NEXT
0777デフォルトの名無しさん
2010/11/15(月) 23:09:570778デフォルトの名無しさん
2010/11/15(月) 23:16:130779デフォルトの名無しさん
2010/11/15(月) 23:32:550780デフォルトの名無しさん
2010/11/16(火) 12:35:03コンパイラが無いから構文エラー特定してくれないし
(自分で作れって話もあるが)
tclとかやっててイライラしてくるわ
0781デフォルトの名無しさん
2010/11/16(火) 13:58:43高速化で時間70%削減は並みじゃないと思うぞ。
ここはC/C++スレだからどちらかの言語だと思うが、ハードを買いなおした方が安いってのは幻想
確かに最新PCを買ってそれで済むならハード交換のが安いが大規模な企業の場合は
ハード買いなおしたらインフラの人が動くしそこで金が動くと思われる。
トータルコストでソフトを改良した方が良いと判断されたのだろう
ハードは時期が着たら交換するだろうが、その時はさらに速度UPするだろうからな
0782デフォルトの名無しさん
2010/11/16(火) 14:40:390783デフォルトの名無しさん
2010/11/16(火) 18:35:540784デフォルトの名無しさん
2010/11/16(火) 22:24:36あるよ
wikipediaより
>POWER6+は5.0GHzまでのクロックが可能で
0785デフォルトの名無しさん
2010/11/17(水) 04:56:40double er[12], ei[12]; という配列に任意の値が入っているとします。
この2つの配列を使った値、i番目ならば
double lensq = er[i] * er[i] + ei[i] * ei[i];
を使ってlensqの降順にインデックスの番号を振った
int index[12]; という配列を作りたいです。
スマートな方法はないでしょうか?
Boostは使わないでください。
例えば配列の要素数は3だったとして
er[3] = { 1.0, -1.0, 2.0 }
ei[3] = { 0.0, 4.0, -1.0 }
だったとすると
index[3] = { 1, 2, 0 }
となって欲しいのです。
0786デフォルトの名無しさん
2010/11/17(水) 11:44:100787デフォルトの名無しさん
2010/11/17(水) 11:59:370788デフォルトの名無しさん
2010/11/17(水) 12:05:43abs(er[i])<abs(er[j])&&(ei[i])<ei([j])ならi<j
0789デフォルトの名無しさん
2010/11/17(水) 12:06:31abs(er[i])<abs(er[j])&&abs(ei[i])<abs(ei([j])ならi<j
0790デフォルトの名無しさん
2010/11/17(水) 13:28:31もう挙げられてるけど
index[3] = { 0 1, 2 };
を用意して比較関数を与えてstd::sortをすればいいんじゃない?
お前の求めるスマートさが見た目をすっきりさせることならだが
0791785
2010/11/17(水) 15:47:07普通にソートしました。
const int d = 3;
double er[d] = { 1.0, -1.0, 2.0 };
double ei[d] = { 0.0, 4.0, -1.0 };
int index[d];
for(int i = 0; i < d; i++)
index[i] = i;
std::sort(index, index + d,
[&](int l, int r)
{
return
(er[l]*er[l]+ei[l]*ei[l]) > (er[r]*er[r]+ei[r]*ei[r])
? true : false;
});
for(int i = 0; i < d; i++)
std::cout << index[i] << std::endl;
0792デフォルトの名無しさん
2010/11/17(水) 22:17:550793デフォルトの名無しさん
2010/11/17(水) 22:33:260794デフォルトの名無しさん
2010/11/18(木) 00:46:31harmfulなんてもんじゃないと思うけど一体何に使うの?
0795デフォルトの名無しさん
2010/11/18(木) 06:47:59そもそも、いくらharmfulでもどんなharmか分かっていれば問題ないよねというのがC言語
0796デフォルトの名無しさん
2010/11/18(木) 09:45:30gotoは脱出先でも合流するために更にgotoつかうのがイヤだな。
switch (setjmp(env)) {
case 0:
for () {
for() {
if ()
longjmp(env, 1);
else if()
longjmp(env, 2);
}
if ()
longjmp(env, 3);
}
break;
case 1:
...
break;
case 2:
...
break;
case 3:
...
break;
}
0797デフォルトの名無しさん
2010/11/18(木) 10:18:26変数一個増やしてでもgoto後に分岐すべき。読みにくすぎる
0798デフォルトの名無しさん
2010/11/18(木) 10:33:44for () {
for() {
if ()
goto l1;
else if()
goto l2;
}
if ()
goto l3;
}
goto l0
l1:
...
goto l0;
l2:
...
goto l0;
l3:
...
/*goto l0;*/
l0:
0799デフォルトの名無しさん
2010/11/18(木) 10:56:38int a = 0;
for () {
for() {
if ()
a=1;
goto loopEnd;
else if()
a=2;
goto loopEnd;
}
if () {
a=3;
goto loopEnd;
}
}
}
switch(a) {
case 1: break;
case 2: break;
case 3: break;
default: break;
}
0800デフォルトの名無しさん
2010/11/18(木) 10:57:420801デフォルトの名無しさん
2010/11/18(木) 10:57:43それもねーな
0802デフォルトの名無しさん
2010/11/18(木) 11:21:00for () {
for() {
if ()
goto l1;
else if()
goto l2;
}
if () {
goto l3;
}
}
}
switch(0) {
default: break;
l1: break;
l2: break;
l3: break;
}
0803デフォルトの名無しさん
2010/11/18(木) 11:25:04ふざけんな
0804デフォルトの名無しさん
2010/11/18(木) 11:29:390805デフォルトの名無しさん
2010/11/18(木) 11:31:37この形だけだからそう見えるけどエラー処理だから最後にまとめて記述する事自体は普通だろう
catchが複数並んでるようなもんで
0806デフォルトの名無しさん
2010/11/18(木) 11:35:160807デフォルトの名無しさん
2010/11/18(木) 11:36:19for文抜けるだけなんじゃなかったか?
それだとなんで飛び先複数いるのかわからんが
0808デフォルトの名無しさん
2010/11/18(木) 11:53:340809デフォルトの名無しさん
2010/11/18(木) 12:34:24ふざけちゃいないが。
0810デフォルトの名無しさん
2010/11/18(木) 12:36:43じゃぁただの馬鹿か
goto文の使い方ぐらいじゃんと勉強しとけ
0811デフォルトの名無しさん
2010/11/18(木) 12:56:34どこが正しくないんだ?
0812デフォルトの名無しさん
2010/11/18(木) 13:10:020813デフォルトの名無しさん
2010/11/18(木) 13:13:100814デフォルトの名無しさん
2010/11/18(木) 13:15:080815デフォルトの名無しさん
2010/11/18(木) 13:16:20最初でも途中でも、好きなところに書いていい。
0816デフォルトの名無しさん
2010/11/18(木) 13:47:30switch文のラベルに外部のgoto文で飛ぶんだよな?
0817デフォルトの名無しさん
2010/11/18(木) 13:48:550818デフォルトの名無しさん
2010/11/18(木) 13:59:250819デフォルトの名無しさん
2010/11/18(木) 14:04:24全く正しい。>>810は正しくないとする根拠を示すように。
>>818
これでも構わない。
for () {
for() {
if ()
goto l1;
else if()
goto l2;
}
if () {
goto l3;
}
}
}
switch(0) {
l1: break;
l2: break;
l3: break;
default: break;
}
0820デフォルトの名無しさん
2010/11/18(木) 14:05:10関数化するとかで回避するのが堅実なんじゃないかな?
避けて通れないようなら仕方ないけどねぇ
いかに簡素化して書けるかが問われるとこだと思うけども
0821デフォルトの名無しさん
2010/11/18(木) 14:14:25defaultに中も外もないよ。
switchの中はどこでも同じ。
0822デフォルトの名無しさん
2010/11/18(木) 14:24:30a=[0][0];
のような形でやってみたんですが上手くいかないのですが、どうすればいいのでしょうか?
0823デフォルトの名無しさん
2010/11/18(木) 14:26:180824デフォルトの名無しさん
2010/11/18(木) 14:28:46a[0][0] = b;
のどっちかだろう
0825デフォルトの名無しさん
2010/11/18(木) 14:38:56正しいかどうかじゃねーだろ
そんな糞みたいな使い方してんじゃねーよ
gotoはあくまで入れ子の中から外に出すために使われるべきでif文やswitch文の外から中に飛ぶべきではない
間違ったgoto文の使用は正しいエラー処理をすっ飛ばし意図しない不具合が起こるしプロジェクト全体に迷惑をかける
0826デフォルトの名無しさん
2010/11/18(木) 14:45:59それを禁止するなら、ラベルのスコープを変数と同じくブロックにすればいい。
ところがCはそのようにしなかった。すなわち想定内の正しい使用法。
本当は>>802のような使い方知らなかったんだろ。
0827デフォルトの名無しさん
2010/11/18(木) 14:50:49でも switch(0) じゃなくて while(0) でいいんじゃない
0828デフォルトの名無しさん
2010/11/18(木) 15:02:190829デフォルトの名無しさん
2010/11/18(木) 15:41:39コンパイラの仕様は関係ないだろ 頭おかしいのか?
int[5]の配列の六番目にアクセスしても何ら文句は言われないがそれが正しいのか?
使い方知らない、とかそんな発想する時点でアセンブラも弄ったこと無いゆとり丸出しだな
一から勉強しなおせ
0830デフォルトの名無しさん
2010/11/18(木) 15:52:25>Duff's Device
見た目恐ろしいが凄いこと考えつく人がいるんだな
0831デフォルトの名無しさん
2010/11/18(木) 16:32:06全然関係ない例を引っ張り出して、頭の悪さがはっきりと出ていね。
0832デフォルトの名無しさん
2010/11/18(木) 16:40:45難しいで「アセンブラ」が真っ先に思い浮かぶなんて、貧困過ぎる。
0833デフォルトの名無しさん
2010/11/18(木) 17:22:120834デフォルトの名無しさん
2010/11/18(木) 17:28:460835デフォルトの名無しさん
2010/11/18(木) 17:40:39小学生みたいっていうやつが小学生なんですぅ〜
0836デフォルトの名無しさん
2010/11/18(木) 17:46:320837デフォルトの名無しさん
2010/11/18(木) 20:51:29じゃあこれなら文句無いだろ
while(1){
for(){
for(){
if()goto l1;
if()goto l2;
if()goto l3;
}
}
break;
l1:
break;
l2:
break;
l3:
break;
}
0838デフォルトの名無しさん
2010/11/18(木) 20:57:010839デフォルトの名無しさん
2010/11/18(木) 21:16:380840デフォルトの名無しさん
2010/11/18(木) 21:23:28外から飛び込むか、中に記述するかは好みの問題ってことでいいね。
0841デフォルトの名無しさん
2010/11/18(木) 21:32:26gotoのほうが良い利点はステップ数が少ないだけ?
0842デフォルトの名無しさん
2010/11/18(木) 22:01:150843デフォルトの名無しさん
2010/11/18(木) 22:12:34820で言ってる。
ネストが深い構造はあまり作るべきではないよな
0844デフォルトの名無しさん
2010/11/18(木) 22:25:550845デフォルトの名無しさん
2010/11/18(木) 22:27:130846デフォルトの名無しさん
2010/11/18(木) 22:27:530847デフォルトの名無しさん
2010/11/18(木) 22:35:280848デフォルトの名無しさん
2010/11/18(木) 22:39:51{
};
try
{
for(…)
{
for(…)
{
if(…) throw Tag<0>();
}
if(…) throw Tag<1>();
}
}
catch(Tag<0>)
{
//…
}
catch(Tag<1>)
{
//…
}
つーかC++なんだし、エラー処理なら例外使うのが正解
なんでこんなこともわからないのかね
正常フローでネストから抜けたいなら宗教論争だから好きにしろ
0849デフォルトの名無しさん
2010/11/18(木) 22:41:280850デフォルトの名無しさん
2010/11/18(木) 22:44:170851デフォルトの名無しさん
2010/11/18(木) 22:50:570852デフォルトの名無しさん
2010/11/18(木) 22:52:52一理あるけど、あまりヒデーと口も出したくなるもんだw
規約上OKならいいのか?となるっしょ
俺の上司なんか元コボルだからほぼ全部グローバル変数だぞwww
直しといて、って気軽に渡されたけど訳わかねーよw
関数の引数は一切なかったwww(AccessVBAだったからスレチかもしれんが)
0853デフォルトの名無しさん
2010/11/18(木) 22:55:49関数化してブラックボックスになったらバグってない限りもう永遠に触らないんだし
迷うのはもっとスケールの大きい選択にぶつかってからでいい
0854デフォルトの名無しさん
2010/11/18(木) 23:31:150855デフォルトの名無しさん
2010/11/18(木) 23:34:31おまえは、マ板でやってる例外の議論を一万回読んでこい
0856デフォルトの名無しさん
2010/11/18(木) 23:38:59分けるべきかもね、スレ…
0857デフォルトの名無しさん
2010/11/18(木) 23:43:15自分には全部低レベルに見えるけど、いったいどのへんに高レベルな話があるんですか?
0858デフォルトの名無しさん
2010/11/18(木) 23:58:020859デフォルトの名無しさん
2010/11/19(金) 00:30:470860デフォルトの名無しさん
2010/11/19(金) 00:49:560861デフォルトの名無しさん
2010/11/19(金) 09:57:43でも>>852は"記述方法"の範疇外の問題だろw
グローバル変数のみ、引数なしってことは内部実装を知らないとパラメータが設定できないんだから
0862デフォルトの名無しさん
2010/11/19(金) 10:40:40while(1){ switch(flag){
case LOOPiQ:/*〜*/; if(!i+=Xi<ENDVALUEi)break;
case LOOPi: /*〜*/; flag=LOOPj;
case LOOPj: /*〜*/; if()flag=L0;else if()flag=L1;else if(!j+=Xj<ENDVALUEj)j=ZEROj,flag=LOOPiQ; continue;
case L0: /*〜*/; break;
case L1: /*〜*/; break;
}flag=LOOPi,i=ZEROi,j=ZEROj;}
キリッ
0863デフォルトの名無しさん
2010/11/19(金) 11:56:31http://studiokingyo.fc2web.com/
0864デフォルトの名無しさん
2010/11/19(金) 16:22:090865デフォルトの名無しさん
2010/11/20(土) 08:54:07ここにあるファイルをダウンロードするプログラムを組みたいのです
受信パスワードにdoujinと入力して受信ボタンを押すというプログラムはどのようにして組むのでしょうか?
簡単なサンプルがあるといいです
よろしくお願いします
0866865
2010/11/20(土) 09:33:45どうもすいませんでした(怒
0867デフォルトの名無しさん
2010/11/20(土) 14:03:580868デフォルトの名無しさん
2010/11/21(日) 10:00:55なんて何に使うんですか?
0869デフォルトの名無しさん
2010/11/21(日) 10:06:560870デフォルトの名無しさん
2010/11/21(日) 10:19:550872デフォルトの名無しさん
2010/11/21(日) 10:31:58と書いてもいいので便利ですね
0873デフォルトの名無しさん
2010/11/21(日) 10:32:370874デフォルトの名無しさん
2010/11/21(日) 10:34:140875デフォルトの名無しさん
2010/11/21(日) 10:35:18ポインターに演算してアクセスしているよ、の意思表示。(けっこう重要)
pointer[3]だと、配列だと間違う可能性もあるだろ。
0876デフォルトの名無しさん
2010/11/21(日) 10:36:27>868の方が速いと信じているか、>870とは意味が違うと勘違いしているか、何も考えていないのでしょう。
0878デフォルトの名無しさん
2010/11/21(日) 10:37:260880デフォルトの名無しさん
2010/11/21(日) 10:40:280881デフォルトの名無しさん
2010/11/21(日) 10:51:00が、他人に「正気を疑われる」などと押し付けるほどの意味はありませんね。
ついでに言えば、配列と間違わないためには文字列を扱う関数内では[]が全く使えなくなります。
ForExample:
int sample(const char * str)
{
int len = 0;
while (* (str + len) != '\0') ++len;
return len;
}
--
私にはstr[len]の方が見易いのですが、どちらでも好きに書けばいいことでしょう。
0882デフォルトの名無しさん
2010/11/21(日) 10:57:18イテレータクラスの場合はすこし状況が変わります
p[n]に比べて*(p+n)はテンポラリなイテレータの生成が含まれるので無駄なコストがかかります
*(p+n)のような使い方をすると予め分かっている場合は必ず[]をオーバーロードしてこちらを使うようにしましょう
そしてC++使いはイテレータに合わせて組み込み型のインクリメントを++itと書くように統一感を重視します
したがってただのポインタの場合でも*(p+n)とは書かずにp[n]と書くことが推奨されています
*(p-1)と書くのは間違いでp[-1]と書くのが普通なのです
0883デフォルトの名無しさん
2010/11/21(日) 11:04:160884デフォルトの名無しさん
2010/11/21(日) 14:01:25その場では pointer+3 だけを計算してあとで *pointer したいかもしれない
pointer[3] だとそれができないじゃないか
いやまぁ & つければいいんだけどね
しかし pointer+3 を &pointer[3] と書くなんて、実にまわりくどい
0885デフォルトの名無しさん
2010/11/22(月) 12:43:14libzとlibpng,libjpegを使うのですが、コンパイルの時に一緒にこれらのライブラリを
指定したほうがいいですか? 特に指定しなくてもあとで画像ライブラリを使うときに
リンクすればいいのでしなくてもいいし、した方がいいのかどっちでしょうか?
0886デフォルトの名無しさん
2010/11/22(月) 12:53:59まぁ、コンパイラのバージョンが変わったときに
以前のコンパイラで作ったlibとリンクできません、なんてことがよくあるんだけど
0887885
2010/11/22(月) 13:56:42libpngとかないとそもそも動かないのでおかしくはないはず。
0888デフォルトの名無しさん
2010/11/22(月) 14:27:21C++ならstd::vector<int> foo;に対して当たり前のように&*foo.begin()と書くから(回りくどいという意識は余りないので)大丈夫。
ポインタ演算できる保障が常にあるわけじゃないことに注意。
0889デフォルトの名無しさん
2010/11/22(月) 20:10:05Duff's Deviceにインスパイヤされて、こんなの思いついた
do{} while(0)バージョン
int x = -1;
switch (a) {
do {
case 0: x = 1; break;
case 1: x = 10; break;
case 2: x = 100; break;
} while(0);
printf("%d %d\n", a, x);
break;
}
ifバージョン(breakなし)
int x = -1;
switch (a) {
if (1)
case 0: x = 1;
else if (1)
case 1: x = 10;
else if (1)
case 2: x = 100;
printf("%d %d\n", a, x);
break;
}
0890デフォルトの名無しさん
2010/11/22(月) 20:50:24その場合はイテレータを返せばいいのでしょうか?
0891デフォルトの名無しさん
2010/11/22(月) 20:54:000892デフォルトの名無しさん
2010/11/23(火) 03:42:070893デフォルトの名無しさん
2010/11/23(火) 08:51:38標準では存在しないとしたら、類似の処理をライブラリで配布していたり、
サンプルコードを掲載しているサイトはありませんか?
0894デフォルトの名無しさん
2010/11/23(火) 10:35:530895885
2010/11/23(火) 12:55:43あとでAを使うときにはlibpngとlibjpegをリンクする必要はないのな。
始めて知った。どのみち必要な事には変わりないけどすっきりしていい感じ。
0896デフォルトの名無しさん
2010/11/23(火) 13:34:28そうしちゃいけない例外もある。例えば特定のOSでのpthreadライブラリ。
pthread.soにスレッドバージョンのforkが含まれているので、ライブラリAが
pthreadを使うときは、実行ファイルのリンクの際にもpthreadをリンクする
必要がある。
0897デフォルトの名無しさん
2010/11/24(水) 08:08:220898デフォルトの名無しさん
2010/11/24(水) 09:40:080899デフォルトの名無しさん
2010/11/24(水) 09:59:040900デフォルトの名無しさん
2010/11/24(水) 12:49:020901デフォルトの名無しさん
2010/11/25(木) 11:48:58それはプロセッサの問題じゃなくてコンパイラの実装の問題
標準では最大値がそれ以上(2^16-1)ならよい事になっている
gccなら32bitプロセッサでも 2^32-1が最大値のはず
0902デフォルトの名無しさん
2010/11/25(木) 15:38:070903デフォルトの名無しさん
2010/11/25(木) 17:03:28正確な翻訳とか書いてるけど確実に機械翻訳
0904デフォルトの名無しさん
2010/11/25(木) 19:40:42google先生でヒットするやつだろ
あれウザイよなjj
0905デフォルトの名無しさん
2010/11/25(木) 19:43:090906デフォルトの名無しさん
2010/11/25(木) 21:12:180907デフォルトの名無しさん
2010/11/25(木) 21:28:070908デフォルトの名無しさん
2010/11/25(木) 22:48:560909デフォルトの名無しさん
2010/11/25(木) 22:58:560910デフォルトの名無しさん
2010/11/26(金) 21:13:59>>memcpyなどでメモリを直にいじってコピーしたりして問題のない オブジェクトのこと
とありますが、別に仮想関数テーブルさえなければコンストラクタを持っていても問題ないと思うのですが
0911デフォルトの名無しさん
2010/11/26(金) 21:22:02{
int id;
hoge(void) { id = getUniqID(); }
hoge(hoge const & other) { id = getUniqID(); }
hoge & operator = (hoge const & other) { return *this; }
};
これでmemcpyしたら死人がでてもおかしくないよ
0912デフォルトの名無しさん
2010/11/27(土) 01:30:580913デフォルトの名無しさん
2010/11/27(土) 02:28:340914デフォルトの名無しさん
2010/11/27(土) 04:47:29恥ずかしくていつも下を向いている
0915デフォルトの名無しさん
2010/11/27(土) 09:35:120916デフォルトの名無しさん
2010/11/27(土) 13:45:34何が問題なのでしょうか?
0917デフォルトの名無しさん
2010/11/27(土) 13:48:50thisのアドレスが変わってしまうだろうが
0918デフォルトの名無しさん
2010/11/27(土) 13:57:50実装の問題では無いんですか?
0919デフォルトの名無しさん
2010/11/27(土) 14:02:460920デフォルトの名無しさん
2010/11/27(土) 14:25:06あんたの言うとおりなわけで、今度の規格改定(C++0x)でそこらへんの定義が変わって、
memcpyできるクラスの制限が緩くなる。
c++0x pod memcpyあたりでググってみればいい。
0921デフォルトの名無しさん
2010/11/27(土) 14:57:57別の言い方をするなら
「memcpyなどでメモリを直にいじってコピーしたりして問題のない オブジェクトのこと」
っていうのが不正確
0922デフォルトの名無しさん
2010/11/27(土) 23:46:33オブジェクトはコピーするな。コピーは構造体まででいいじゃん。
0923デフォルトの名無しさん
2010/11/27(土) 23:48:060924デフォルトの名無しさん
2010/11/27(土) 23:51:58< オブジェクトのコピーはやめよう。とにかくコピーは構造体まででいいじゃん。 >
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
0925デフォルトの名無しさん
2010/11/27(土) 23:59:000926デフォルトの名無しさん
2010/11/28(日) 00:10:13デバッガ出力画面に文字列を出力する方法はありますか?
0927926
2010/11/28(日) 00:11:250928デフォルトの名無しさん
2010/11/28(日) 00:11:400929デフォルトの名無しさん
2010/11/28(日) 00:12:360931デフォルトの名無しさん
2010/11/29(月) 21:51:22OutputDebugStringさんをどうにかしたい
0932デフォルトの名無しさん
2010/11/30(火) 18:23:220933デフォルトの名無しさん
2010/11/30(火) 18:56:24#ifdef _DEBUG
っつか普通TRACE
>>927
プリコンパイルドヘッダ
0934デフォルトの名無しさん
2010/11/30(火) 20:13:33現在C/C++などを勉強し始めたばかりの学生です。
最近ポインタ周りを勉強していてふと思ったのですが
ポインタは変数のアドレス先を保存すると書かれてそれで納得していたのですが、
何故(INT*)などのINTのように型の宣言が必要なのでしょうか?
当たり前な事なのかもしれないですが、よろしければご教授いただけないでしょうか?
0935デフォルトの名無しさん
2010/11/30(火) 20:18:360936デフォルトの名無しさん
2010/11/30(火) 20:20:100937デフォルトの名無しさん
2010/11/30(火) 20:23:140938デフォルトの名無しさん
2010/11/30(火) 20:30:00↓
だから、ポインターは変数を知っていると考えると。 *だけでいいと思う。
がきっと int* の疑問かな
ポインターはメモリー上のアドレス値を持つ。
↓
と考えれば、ポインターに型情報はない。
だから、アクセスするための型情報を宣言する−>int*
実際これが正しい。
0939デフォルトの名無しさん
2010/11/30(火) 20:37:460940デフォルトの名無しさん
2010/11/30(火) 20:46:25なのでたとえば101010111101というデータがあったときに
これを整数と解釈するのか実数と解釈するのかあるいはほかの形式のデータと解釈するのか
機械はアホなので迷ってしまいます
そんなわけで型を機械に教えてあげないとだめなわけです
0941デフォルトの名無しさん
2010/11/30(火) 20:47:06実際、『型を決めていないポインタ』として、[void*]という型があるよ。
[intだと分かってる場合]
int a=0, b=5;
int *p = &b;
a = *p + 3;
[型情報がない場合]
int a=0, b=5;
void *p = &b;
a = *(int*)p +3;
みたいにいちいちキャストしなきゃいけないのが面倒で、最初から型情報をもってたほうが簡単。
0942デフォルトの名無しさん
2010/11/30(火) 23:52:12int *a;
struct intx2 { int x, int y} *b;
とすると、コンパイラは、a++はint1個分、b++はint2個分アドレスを進めれば言いって分かる。
void *c;
だと、どれだけポインタを進めていいのか判らない。
0943デフォルトの名無しさん
2010/12/01(水) 12:47:070944デフォルトの名無しさん
2010/12/01(水) 12:54:080945デフォルトの名無しさん
2010/12/01(水) 12:54:400946デフォルトの名無しさん
2010/12/01(水) 17:02:340947デフォルトの名無しさん
2010/12/01(水) 17:19:130948デフォルトの名無しさん
2010/12/01(水) 17:26:520949デフォルトの名無しさん
2010/12/01(水) 17:28:10Cの部分はほとんど残してるけどな
0950デフォルトの名無しさん
2010/12/01(水) 17:49:380951デフォルトの名無しさん
2010/12/01(水) 17:55:550952デフォルトの名無しさん
2010/12/01(水) 18:30:04型キャストをC式で書くのが非推奨だって知ったのはC++勉強しはじめてから何年も経ってからだった
0954デフォルトの名無しさん
2010/12/02(木) 03:30:55C==C++
0955デフォルトの名無しさん
2010/12/02(木) 03:49:33stdio.hではなくcstdio
#ifdef __cplusplus を積極的に使う
mainのreturn 0;はいらない
0956デフォルトの名無しさん
2010/12/02(木) 09:35:100957デフォルトの名無しさん
2010/12/02(木) 10:36:48そういう常識的なことは Effective C++ に書いてあるんでは
0958デフォルトの名無しさん
2010/12/02(木) 12:12:10だが、同じことを楽に安全にできることは物凄く増えた
0959デフォルトの名無しさん
2010/12/02(木) 12:24:550960デフォルトの名無しさん
2010/12/02(木) 12:36:270961デフォルトの名無しさん
2010/12/02(木) 13:37:370962デフォルトの名無しさん
2010/12/02(木) 13:48:36書いてあったけど、EffectiveC++を発見できるのはたまたま見つけた奴だけだろ……
0963デフォルトの名無しさん
2010/12/02(木) 14:16:06すごく有名な本だし、入門書読んで少しコーディングするようになったら
次に読む本って感じではない?俺はそういう印象持ってるけど
たまたま見つけるって程知られてないかなぁ
0964デフォルトの名無しさん
2010/12/02(木) 14:21:200965デフォルトの名無しさん
2010/12/02(木) 14:21:560966デフォルトの名無しさん
2010/12/02(木) 20:23:21vecotr<hoge*> *vec = new vector<hoge*>();
hoge hg1 = new hoge();
hoge hg2 = new hoge();
vec->puss_back(hg1);
vec->puss_back(hg2);
ってするとvecをclearしてもnewしたhogeがメモリリークするんだけど
vec側から全てのhogeを解放することってできる?
0967デフォルトの名無しさん
2010/12/02(木) 20:24:43hoge hg1 = new hoge();
hoge hg2 = new hoge();
じゃなくて
hoge *hg1 = new hoge();
hoge *hg2 = new hoge();
ということで
0968デフォルトの名無しさん
2010/12/02(木) 20:31:15つっこんだ時点ですべてコピーされてると思う。
0969デフォルトの名無しさん
2010/12/02(木) 20:40:05std::vectorの替わりにboost::ptr_vectorを使えば解決する
0970デフォルトの名無しさん
2010/12/02(木) 22:30:15for (int i = 0; i < (int)vec.size(); i++) {
delete vec[i];
}
vec.clear();
0971デフォルトの名無しさん
2010/12/03(金) 08:22:55だから>>966はそれを手で書かず自動でやって欲しいと言っているのだが
今の所>>969がベスト
0972デフォルトの名無しさん
2010/12/03(金) 08:39:01後出し厨だな
0973デフォルトの名無しさん
2010/12/03(金) 08:56:520974デフォルトの名無しさん
2010/12/03(金) 09:24:560975デフォルトの名無しさん
2010/12/03(金) 10:12:480976デフォルトの名無しさん
2010/12/03(金) 10:21:260977デフォルトの名無しさん
2010/12/03(金) 10:21:27スマートポインタを使うのに当たってブルジョアマシンは必要ないという事に成るな。
0978デフォルトの名無しさん
2010/12/03(金) 12:29:46975 はハードの話じゃないんじゃないかな
開発環境を自分が常に選べるわけじゃない
0979デフォルトの名無しさん
2010/12/03(金) 13:05:040980デフォルトの名無しさん
2010/12/03(金) 13:12:140981デフォルトの名無しさん
2010/12/04(土) 16:01:05理由はいろいろあるにしても
0982デフォルトの名無しさん
2010/12/04(土) 16:51:28public:
A a;
int B();
};
C::C(){
a = 代入;
}
これだと代入で例外で止まってしまいます。
class C{
public:
int B();
};
C::C(){
A a;
a = 代入;
}
これだと行けます。何が問題でしょうか。
0983デフォルトの名無しさん
2010/12/04(土) 16:53:07○ C::B(){
まちがえました
0984デフォルトの名無しさん
2010/12/04(土) 17:25:02その説明でわかるやつは一人もいないと思うぞ
コード全部貼れ
0985デフォルトの名無しさん
2010/12/04(土) 17:29:21それで違いが出るはずはないので>>982の気づいてない何かがあるな。
というか例外メッセージぐらい張れ。
0986デフォルトの名無しさん
2010/12/04(土) 19:38:15このようなコードを見かけたのですが、関数に()を書かないと
関数のアドレスが渡されるのですか?
0987デフォルトの名無しさん
2010/12/04(土) 19:53:190988デフォルトの名無しさん
2010/12/04(土) 19:55:35thx
0989982
2010/12/05(日) 07:12:22#include <mmsystem.h>
class C_OpenWave
{
public:
HMMIO hMmio; //ハンドル
MMIOINFO mmioInfo;
WAVEFORMATEX wFmt; //BufferDesk用
bool InitWave();
};
bool C_OpenWave::InitWave()
{
//ファイルオープン
memset( &mmioInfo, 0, sizeof(MMIOINFO) );
mmioInfo.pchBuffer = (HPSTR)ファイルへのポインタ;
mmioInfo.fccIOProc = FOURCC_MEM;
mmioInfo.cchBuffer = sizeof(ファイルのサイズ);
hMmio = mmioOpen(NULL, &mmioInfo, MMIO_ALLOCBUF | MMIO_READ);
return true;
}
0990982
2010/12/05(日) 07:14:36memset( &mmioInfo, 0, sizeof(MMIOINFO) );
ないし、
hMmio = mmioOpen(NULL, &mmioInfo, MMIO_ALLOCBUF | MMIO_READ);
で
test.exe の 0x004114f5 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xcccccccc に書き込み中にアクセス違反が発生しました。
と出ます。
ちなみに
HMMIO hMmio;
MMIOINFO mmioInfo;
をローカル変数にするとエラーが出ません。
0991デフォルトの名無しさん
2010/12/05(日) 10:17:560992デフォルトの名無しさん
2010/12/05(日) 11:04:10ローカル変数は0xccccccccになる。
0993デフォルトの名無しさん
2010/12/05(日) 11:19:560994デフォルトの名無しさん
2010/12/05(日) 11:22:070995982
2010/12/05(日) 11:27:470996デフォルトの名無しさん
2010/12/05(日) 11:31:11初期化されてないポインタ変数を渡してるんだろ
0997デフォルトの名無しさん
2010/12/05(日) 11:46:140998デフォルトの名無しさん
2010/12/05(日) 11:50:11エラーメッセージは未初期化のポインタを参照したといっている。
これ以上の質問は「未初期化のポインタをどこで使っているか分らないので、
ソースみて指摘してくれ」に他ならない。
それでも質問したいなら、全ソース何処かにうpしろ。
0999デフォルトの名無しさん
2010/12/05(日) 15:34:371000デフォルトの名無しさん
2010/12/05(日) 15:37:2810011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。