【初心者歓迎】C/C++室 Ver.26【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/03/29(水) 11:59:26ただしその場合、質問者は必ず、環境を書きましょう。
※sageは禁止です。
【前スレ】
【初心者歓迎】C/C++室 Ver.25【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1140963340/l50
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0002デフォルトの名無しさん
2006/03/29(水) 12:54:280003デフォルトの名無しさん
2006/03/29(水) 13:36:07おつ
0004デフォルトの名無しさん
2006/03/29(水) 16:13:060005デフォルトの名無しさん
2006/03/29(水) 18:53:53乙
>前1000
GJ
0006デフォルトの名無しさん
2006/03/29(水) 20:42:480007デフォルトの名無しさん
2006/03/30(木) 22:02:04当方VC6.0しか環境が無く。どうにか、これでRAD的に簡単にGUI組んでいく方法ない?
0008デフォルトの名無しさん
2006/03/30(木) 22:09:050009デフォルトの名無しさん
2006/03/30(木) 22:16:550010デフォルトの名無しさん
2006/03/30(木) 22:50:35ごめん。せっかくだけどSP2入れれないから、俺無理だった。。。
>>9
そんなことが出来るのか。
思ったんだけど、EcllipseにGUIエディタ入れて、C++のも入れて編集したりとかできないかな
つか、VCでのGUIの組み方を親切丁寧に教えてくれてるサイトって無いものか
0011デフォルトの名無しさん
2006/03/30(木) 23:51:49ツールバーとかつけるだけでも大変だけど、
それを簡単に作れるようにマイルーチンを鍛えていくのが楽しい。
0012デフォルトの名無しさん
2006/03/30(木) 23:59:12ダイアログエディタはそんなに使いづらかった?
0013デフォルトの名無しさん
2006/03/31(金) 00:50:350014デフォルトの名無しさん
2006/03/31(金) 11:04:04メニュー付きで編集できるなら良かったのだけど(ダイアログ
画像(BMP〜PSDくらいまで)を単純にファイル選択ウィンドウから開いて
加工して、プレビューで見せて任意形式で保存するようなアプリにしたいのだけど
0015デフォルトの名無しさん
2006/03/31(金) 13:37:34つ[ImageMagick]
0016デフォルトの名無しさん
2006/03/31(金) 21:46:15初めからダイアログボックスにメニューをつけて画像開くようにしようとおもう
ところでピクチャボックスにファイル開いて画像の表示って出来るかな
>>14
やりたいことがあるから既存のソフトウェアは。。。
0017デフォルトの名無しさん
2006/03/32(土) 01:56:01デストラクタはvirtual宣言しておくべきだと言えるのですか?
0018デフォルトの名無しさん
2006/03/32(土) 02:09:28001916
2006/03/32(土) 02:20:53002017
2006/03/32(土) 02:21:420021デフォルトの名無しさん
2006/03/32(土) 02:33:51void make_obj_b;
};
void A::make_obj_b;(){
obj_b B;
]
class B{
}
void
int main (){
obj_a A;
obj_a::make_obj_b;
// <-ココ
return;
}
とした場合、コメントの場所でobj_bは破棄されてしまいます。
obj_aが生きている間はobj_bを保持する方法などはありますか?
0022デフォルトの名無しさん
2006/03/32(土) 02:37:25集約の関係にする。
お前はOOPのなんたるかを勉強し直せ
0023デフォルトの名無しさん
2006/03/32(土) 02:43:17thx.
002417
2006/03/32(土) 03:51:45それは、基本クラスオブジェクトへのポインタを通じて派生クラスオブジェクトへアクセスする事例を考慮しての事ですか?
0025デフォルトの名無しさん
2006/03/32(土) 03:53:350026デフォルトの名無しさん
2006/03/32(土) 03:54:18サブクラスのデストラクタを呼ぶため
002717
2006/03/32(土) 04:17:28002817
2006/03/32(土) 04:19:40アップキャストと言うのですね。
勉強になりました^^
002917
2006/03/32(土) 04:20:52アップキャストと言うのですね。
勉強になりました^^
独習C++では教えてくれませんでした><
0030デフォルトの名無しさん
2006/03/32(土) 04:27:07アップキャストは「アクセスすること」じゃなくて、
アクセスするためにポインタや参照を変換することを言う。
0031デフォルトの名無しさん
2006/03/32(土) 05:54:40そこから仮想関数呼んだらまだ派生クラスの関数の方を呼ぶんですか?
0032デフォルトの名無しさん
2006/03/32(土) 05:57:23この動作が気に食わないならvirtualせずにオーバーライドしとけ
0033デフォルトの名無しさん
2006/03/32(土) 06:03:27今は基本クラスのオブジェクトを指してる筈だから、基本クラスのvirtualついた方を呼ぶべきだと思います><
0034デフォルトの名無しさん
2006/03/32(土) 06:08:21日本語でおk
0035デフォルトの名無しさん
2006/03/32(土) 06:12:490036デフォルトの名無しさん
2006/03/32(土) 06:14:160037デフォルトの名無しさん
2006/03/32(土) 06:26:31日本語でおk
0038デフォルトの名無しさん
2006/03/32(土) 06:29:47どうせあんたなんか朝生でも見て暇を持て余してたんでしょ!
で、変なの居るから適当にいじめてやろうって魂胆でしょ!?><
0039デフォルトの名無しさん
2006/03/32(土) 06:53:55もうvirtualの存在意義とか混乱して分からなくなりました><
0040デフォルトの名無しさん
2006/03/32(土) 07:19:23んで、ダウンキャストしたら基本クラスの方を使いたいなら
virtual無しオーバーライドにすると。
0041デフォルトの名無しさん
2006/03/32(土) 07:21:29>呼ぶべきだと思います><
派生クラスの関数を呼ぶためにvirtual にしてるんだから何もおかしくないだろ
0042デフォルトの名無しさん
2006/03/32(土) 07:26:550043デフォルトの名無しさん
2006/03/32(土) 07:32:25キャストの仕組みが理解できてないのだと思います。
0044デフォルトの名無しさん
2006/03/32(土) 07:47:250045デフォルトの名無しさん
2006/03/32(土) 08:05:47vitualつけてないと、ダイナミックキャストで継承クラスのポインタを得たりしない限り
アップキャストしても基本クラスの関数呼び出しです。
継承クラスのオブジェクトのポインタからダイナミックにダウンキャストした場合でも
基本クラスの関数を呼び出します。
vitualをつけると、キャストがアップダウン関わらずvirtualがついてない方を呼び出すよう努力します。
0046デフォルトの名無しさん
2006/03/32(土) 09:16:06C++の学習をしています、クラスライブラリを作って見たいのですが
どういうライブラリを製作していいか思いつきません
皆さんがC++を学んだ当初どのようなライブラリを作られましたか?
題材のヒントをもらえないでしょうか
0047デフォルトの名無しさん
2006/03/32(土) 09:37:070048デフォルトの名無しさん
2006/03/32(土) 12:49:580049デフォルトの名無しさん
2006/03/32(土) 12:59:10環境はcygwinです。
configure --enable-widecの後makeしたncursesを使っています。
コンパイルはgcc test.c -lncurseswです。。
printwもaddwstrも文字化けしてしまいします。
コンソールプログラムのprintf("こんにちは");は正常に表示されています。
0050デフォルトの名無しさん
2006/03/32(土) 18:27:510051デフォルトの名無しさん
2006/03/32(土) 18:34:260052デフォルトの名無しさん
2006/03/32(土) 18:34:28A(char *x){.....}
B(){char x[]=(..);....A(x)...}
としたら、'char *' 型は 'char[]' 型に変換できない エラーになりました
どうしたらいいですか
0053デフォルトの名無しさん
2006/03/32(土) 18:39:250055デフォルトの名無しさん
2006/03/32(土) 18:49:03とりあえずstatic_cast。
それで駄目ならreinterpret_castかconst_cast。
C形式のキャストは出番無し。
0056dynamic_cast
2006/03/32(土) 18:53:510057初心者
2006/03/32(土) 19:07:38>>52
A(char **x){.................}
だとどうかな?
char x[]=(.........)のxはポインタポインタのレベル?だから
入れる方も**にしてポインタポインタにしないといけないんじゃないかな?
005850
2006/03/32(土) 19:08:13intをただunsignedにするだけでもわざわざstatic_castするんですか?
0059デフォルトの名無しさん
2006/03/32(土) 19:30:55するよ。
0060デフォルトの名無しさん
2006/03/32(土) 19:47:11帰れ
006150
2006/03/32(土) 19:53:22あり^^
006252
2006/03/32(土) 20:02:440063デフォルトの名無しさん
2006/03/32(土) 20:24:41代わりにコンテナへのポインタを格納するようにするのですか?
0064デフォルトの名無しさん
2006/03/32(土) 20:25:34vector<vector<int> > vv;
とかそういう事?
006563
2006/03/32(土) 20:27:300066デフォルトの名無しさん
2006/03/32(土) 20:35:47で、>>64のような書き方ではコンパイルエラーが出るの?
ポインタを入れたいのはなぜ?
0067デフォルトの名無しさん
2006/03/32(土) 20:36:06略し過ぎ。
さっぱり分からん。
0068デフォルトの名無しさん
2006/03/32(土) 20:36:400069デフォルトの名無しさん
2006/03/32(土) 20:45:19俺も最初そう思った。しかしコンパイルエラーを晒してくれないので
さっぱり原因がわからん。
0070初心者(今までのは全部間違い、すまそ)
2006/03/32(土) 20:46:19// test.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
void name(char* s){
cout << s << "\n";//(s:文字列の先頭を指すポインタ)を入れるとcoutが文字列にして全部表示してくれる
cout << &s << "\n";//(&s:文字列の先頭を指すポインタの中身)
cout << s[14] <<"\n";//(s[14]:15番目のポインタ)をcoutが文字にして表示してれる
}
int _tmain(int argc, _TCHAR* argv[])
{
char s[]= "2chnerehayaku sine";
name(s);
return 0;
}
>>52
ゴメン、今までの全部なしにして
>>52の通りで普通に出来たけど
何か駄目なのか?
007163
2006/03/32(土) 20:47:59なんだかエラーが出たような気がしないでもないから苦肉策としてです。
僕も自然な表記で済むならそうしたいです。
007263
2006/03/32(土) 20:51:18調べて参ります。
0073デフォルトの名無しさん
2006/03/32(土) 20:51:26気になるならvector< vector<int> >とかやればいいんでないの。
これでも気になるなら他の手段使えばいいよ。
0074初心者
2006/03/32(土) 21:00:51cout << &s << "\n";//(&s:文字列の先頭を指すポインタの中身)
↓
cout << *s << "\n";//(*s:文字列の先頭を指すポインタの中身)
に変更
上のはポインター自体のアドレスだがや
0075初心者
2006/03/32(土) 21:15:55ていうのも違うな
cout << s[14] <<"\n";//(s[14]:15番目の文字)をcoutが文字にして表示してれる
15番目の文字って意味だな
(ポインタともいえるのかもしれないけど、一応 *s[14] って出来ないから文字だな)
0076初心者
2006/03/32(土) 21:22:53cout << s << "\n";//(s:文字列の先頭を指すポインタ)を入れるとcoutが文字列にして全部表示してくれる
cout << s + 14 << "\n";//(s:文字列の先頭を指すポインタ)を入れるとcoutが15番目の文字から文字列にして最後まで表示してくれる
cout << *s << "\n";//(*s:文字列の先頭を指すポインタの中身 )
cout << &s << "\n";//(&s:文字列の先頭を指すポインタのアドレス)
cout << s[14] <<"\n";//(s[14]:15番目の文字)をcoutが文字にして表示してれる
俺、全然駄目だな・・・
0077デフォルトの名無しさん
2006/03/32(土) 21:37:31floatは必ずしもdoubleにされるわけじゃないですよね?
K&R1版にはdoubleに格上げされるとあるようですが、
古い仕様ですよね?
0078デフォルトの名無しさん
2006/03/32(土) 22:01:54その通り
007977
2006/03/32(土) 22:07:090080初心者
2006/03/32(土) 22:32:200081デフォルトの名無しさん
2006/03/32(土) 22:57:450082初心者
2006/03/32(土) 23:12:27としたとき
東京の”京”の字だけ出すにはどう配列を書いたら良いの?
0083初心者
2006/03/32(土) 23:25:07ポインタの配列か
0084デフォルトの名無しさん
2006/03/32(土) 23:40:08#include <stdio.h>
#include <wchar.h>
wchar_t const* s1[3] = {L"東京",L"大阪",L"名古屋"};
fputwc(s1[0][1], stdout);
0085デフォルトの名無しさん
2006/03/32(土) 23:45:22何をしたいのかわからんが、"京"は2バイト文字なので、
s1[0][2]とs1[0][3]のchar型2つ分の内容で"京"1文字を表す。
0086デフォルトの名無しさん
2006/03/32(土) 23:48:03いい加減なこと言うなや
0087初心者
2006/03/32(土) 23:49:34ありがとう
やっぱ
他の関数使わないと無理なのな
0089デフォルトの名無しさん
2006/03/32(土) 23:55:56例えばEUCだと3バイト文字がある
0090デフォルトの名無しさん
2006/03/32(土) 23:59:54扱えないっちゅうことか?
0091デフォルトの名無しさん
2006/04/02(日) 00:04:290092初心者
2006/04/02(日) 00:20:06の時
s1[0]+1
s1[0][1]
は同じ事なのかな?
0093デフォルトの名無しさん
2006/04/02(日) 00:41:52*(s1[0]+1)
と
s1[0][1]
が同じ。
0094デフォルトの名無しさん
2006/04/02(日) 00:48:59前者はchar *型、
後者はchar型
s1 : char *[3]型
s1[0] : char *型
s1[[0][0] : char型
こうするとわかりやすい。
std::cout << typeid(s1[0] +1).name() << std::endl ;
std::cout << typeid(s1[0][1]).name() << std::endl ;
009563
2006/04/02(日) 00:50:35コンテナはコンテナを格納出来ます。
0096初心者
2006/04/02(日) 01:11:41>>94
つまり
s1[0][1]って
はchar型なのな
だから
&s1[0][1]ってやると
okyoになるのか
結局、普通の配列なのか
0098デフォルトの名無しさん
2006/04/02(日) 01:46:29wchar_tのエンコーディングは何も規定されてないよ、規格上は。
Unicodeを使うのが最近では一般的だけど
そうでない実装も普通にある/あった。
0099デフォルトの名無しさん
2006/04/02(日) 02:16:51Cでprintfなら一瞬なのに、C++のやり方だと一文字ずつズラーっと並ぶ感じ。
0100デフォルトの名無しさん
2006/04/02(日) 02:28:22それはそれでカッコいいじゃん
0101デフォルトの名無しさん
2006/04/02(日) 02:39:46PhotoShopで作成したアルファを適応したPNGファイルが読み込みたいので
ttp://www.topposystem.co.jp/GDIp/GDIp/gdi_flat_api.htm
にあるGDI+FlatsAPIsの関数を使用しファイルの読み込みに
336 GpStatus WINGDIPAPI GdipCreateBitmapFromFile(GDIPCONST WCHAR* filename, GpBitmap **bitmap);
でGpBitmapを作成し
344 GpStatus WINGDIPAPI GdipCreateHBITMAPFromBitmap(GpBitmap* bitmap, HBITMAP* hbmReturn, ARGB background);
でhBitmapに変換しそれをUpdateLayeredWindowで表示させようと思ってるのですが
GpStatus GdipCreateBitmapFromFile("ファイル", GpBitmap **bitmap);の形で書くと
初期化子の数が多いと言われ、上のリストと引数が違い詳細がわからず困っています。
環境はVC++.NET2003で作成しています。
この方法でアルファが抜けた状態でウィンドウを表示する事は可能なのでしょうか?
普通のBitmapやアルファの付きのBMP等の表示は成功しています。
どなたか教えて頂けないでしょうか?よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています