★初心者にVisual C++を教えるスレ★ Part38

このエントリーをはてなブックマークに追加
937デフォルトの名無しさん:2013/05/24(金) 12:30:27.48
Express ってオチか?
938936:2013/05/24(金) 15:02:37.67
あれ 出来そうな感じね。
久々にVCいじってみたら綺麗に忘れてる。
なんか勘違いしてるのかも。
939デフォルトの名無しさん:2013/05/24(金) 17:08:04.50
AfxMessageBoxはMFCの関数。プロジェクトはMFCサポートしてるか?
940936:2013/05/24(金) 22:10:48.74
>>939
あう チェックしてるみます。 でもそれっぽい ハジー
941デフォルトの名無しさん:2013/05/26(日) 04:59:13.13
2010のExpressについて質問です

1,
TODOコメントを入れる時に日付とか名前を自動で入れられるようにできないですか?
要するにTODOコメントのテンプレを作りたいってことです

2,
switchとかclass(アクセス指定子)とかのインデントを個別に設定出来ませんか?
942デフォルトの名無しさん:2013/05/28(火) 23:26:59.24
Visual C++ 2010 Express - CRLを使用して、部活動分類ツールを作っているのですが
うまくいきません。
苗字とクラスをコンボボックスから選んで、該当する組み合わせがあれば
コピー専用のテキストボックスに所属している部活動名が表示されるプログラムです。
if文を使って処理をしようと思っているのですが、項目の編集で登録した
苗字、クラス名の要素をどうやって取得していいのかわかりません。
どうすれば、AddRange(gcnew cli:: array< System::Object^ >(数値) {}); から要素を取得し、
仕様通りに動くプログラムを作ることができるのでしょうか?

作りかけのプロジェクトを置いておきます。
http://kie.nu/11at
943デフォルトの名無しさん:2013/05/29(水) 01:01:47.38
コード見たけど。
そもそもどうやって、名字とクラスと部活を結びつけようとしてんの? どこにもなさそうなんだが。

簡単な方法としては、上の3つを要素として持つクラスを作成して、その配列に生徒?を登録。
条件を入力されたら、上の配列の名字とクラス名とで照らし合わせて一致してれば
その同じ要素にある部活名を表示でいいんじゃね。

検索の方法は、for ループで配列をまわして if でチェックでもいいし、LINQ が使えるならそれ使ってもいいし。



あと、ここで言うのもなんだが。その内容なら C# でやった方が。。。
944デフォルトの名無しさん:2013/05/29(水) 21:16:22.37
C++を始めて間もないのですが教えてください。

_tmainのコンソールアプリのプロジェクトでMFCのクラスを使いたいのですが、

この場合はどのようにするのでしょうか?MFCのアプリだと派生クラスで定義しているのは

参考にしているプロジェクトで分かるのですが、コンソールアプリだとどうしたらよいのでしょうか
945デフォルトの名無しさん:2013/05/29(水) 21:18:34.59
プロジェクト作るときにMFCにチェック
946デフォルトの名無しさん:2013/05/29(水) 21:36:39.30
>>945
すみません説明不足でした。

参考にしているMFCアプリのソースがありまして、それは派生クラスを使って、外部のクラスを呼び出しているところまでは分かりました。

コンソールアプリでMFCのチェックを入れれば、とりあえず、同じ外部のクラスを読み込ませることはできたのですが、

読み込ませただけで、どのようにしたら使えるようになるのかがわかりません。

_tmainの場合とMFCの派生させて使う場合の使いわけが、混乱しています。
947デフォルトの名無しさん:2013/05/29(水) 21:45:41.87
MFCを利用してるサードパーティ製のクラスの利用方法が聞きたいってことか。
それはエスパーじゃないと答えれないな
948デフォルトの名無しさん:2013/05/30(木) 08:33:58.88
AfxWinInit関係を調べます。
949デフォルトの名無しさん:2013/06/08(土) 21:21:20.98
VC++ 2008 の win32 console(マルチバイト文字セットを使用する)
にて下記のようにエラーが出力されます。
----
0xC0000005: 場所 0xcdcdcdc9 を読み込み中にアクセス違反が発生しました。
0xC0000005: 場所 0xcdcdcdc9 を読み込み中にアクセス違反が発生しました。
プログラム '[15796] test.exe: ネイティブ' はコード -1073741819 (0xc0000005) で終了しました。
----
▽▽▽ ソース
#include <stdio.h>
#include <atlstr.h>

int main(int argc, char* argv[])
{
  CString *pstr;

  pstr = (CString *)malloc(sizeof(CString) * 2);

  pstr[0].Format("test0");
  pstr[1].Format("test1");

  printf("%s\n", (char *)(LPCTSTR)pstr[0]);
  printf("%s\n", (char *)(LPCTSTR)pstr[1]);

  free(pstr);

  return 0;
}
△△△
CString型配列を動的に確保する方法がありましたら、
ご教示お願いします。
950デフォルトの名無しさん:2013/06/08(土) 22:33:19.81
× pstr = (CString *)malloc(sizeof(CString) * 2);
○ pstr = new CString[2];

× pstr[0].Format("test0");
○ pstr[0].Format(_T("test0"));

×printf("%s\n", (char *)(LPCTSTR)pstr[0]);
○printf("%s\n", (CStringA)pstr[0]);

× free(pstr);
○ delete[] pstr;
951デフォルトの名無しさん:2013/06/09(日) 02:05:10.00
>>950
丁寧に教えていただきありがとうございます
952デフォルトの名無しさん:2013/06/09(日) 02:59:48.98
01: #include <stdio.h>
02: #include <atlstr.h>
03: #include <vector>
04: 
05: int main(int argc, char* argv[])
06: {
07:   std::vector<CStringA> vstr;
08:   int bk_cnt, cnt = 0;
09: 
10:   bk_cnt = cnt;
11:   vstr.resize(cnt + 1);
12:   if( bk_cnt == vstr.size() ) return 0; // メモリ再割り当て失敗の場合は終了する
13: printf("bk_cnt=[%d] size=[%d]\n", bk_cnt, vstr.size());
14:   vstr[ cnt++ ].Format("あああ");
15: printf("vstr[%d]=[%s]\n", bk_cnt, vstr[bk_cnt]);
16: 
17:   bk_cnt = cnt;
18:   vstr.resize(cnt + 1);
19:   if( bk_cnt == vstr.size() ) return 0; // メモリ再割り当て失敗の場合は終了する
20: printf("bk_cnt=[%d] size=[%d]\n", bk_cnt, vstr.size());
21:   vstr[ cnt++ ].Format("いいい");
22: printf("vstr[%d]=[%s]\n", bk_cnt, vstr[bk_cnt]);
23: 
24:   return 0;
25: }
26: ----【実行結果】----
27: bk_cnt=[0] size=[1]
28: vstr[0]=[あああ]
29: bk_cnt=[1] size=[2]
30: vstr[1]=[いいい]
953デフォルトの名無しさん:2013/06/09(日) 03:02:33.22
見にくいソースで申し訳ないのですが、
>>952について教えて欲しいです。
VC++ 2008 の win32 console(マルチバイト文字セットを使用する)環境で実行しました。

std::vector を使い CStringA型の配列のメモリを動的に再割り当てするプログラムです。
vector::resize の成功か失敗かを知りたいのですが、この関数はvoid型なので、
戻り値がありません。

10行目、12行目にて、メモリの再割り当てが成功か失敗か判断しているつもりですが、
「成功(要素数が増加している)、失敗(要素数に変化なし)」という判断方法で、
合っていますでしょうか。

ご存じの方がいらっしゃれば、よろしくお願いします。
954デフォルトの名無しさん:2013/06/09(日) 03:07:29.31
例外知らないとかお前なにを勉強してたんだ
955デフォルトの名無しさん:2013/06/09(日) 03:18:48.52
>>954
すみません。あまり慣れていない手段(例外)は使いたくなかったので避けていました
>>952では失敗を検知するのは例外(try , throw , catch)を使う方法しかないのでしょうか
956デフォルトの名無しさん:2013/06/09(日) 03:24:07.71
ない
957デフォルトの名無しさん:2013/06/09(日) 07:43:53.94
>>956
ありがとうございます
了解しました
958デフォルトの名無しさん:2013/08/06(火) 00:20:27.85
教えてください
959片山博文MZパンク ◆0lBZNi.Q7evd :2013/08/06(火) 00:34:10.55
>>958
インストールハ、オワッタカ?
960デフォルトの名無しさん:2013/08/06(火) 00:50:20.67
お断りします
961デフォルトの名無しさん:2013/08/07(水) 00:38:57.77
ひどいわ
962デフォルトの名無しさん:2013/08/08(木) 04:33:10.39
Visual c++でCを使う方法を教えて下さい。基本情報受けたいです。
963デフォルトの名無しさん:2013/08/08(木) 08:29:49.60
ファイル拡張子をCにしたら?
964デフォルトの名無しさん:2013/08/08(木) 08:46:24.86
ありがとうございます、普通にフォルダで見るとCのファイルに変わってるんですが、VisualC++ を開いた時、左側のソリューションのところでは画像がC++のファイルのままです。これは変わってるんですか?
965デフォルトの名無しさん:2013/08/08(木) 08:48:15.00
よく分からんが変わってるんじゃない?
CもC++も同じだから気にするな
966デフォルトの名無しさん:2013/08/08(木) 11:25:18.90
967デフォルトの名無しさん:2013/08/08(木) 20:01:00.14
ファイルの拡張子を表示する設定にしてないとか
968デフォルトの名無しさん:2013/08/08(木) 22:14:37.79
>基本情報受けたい

って意味がよく分からん
969デフォルトの名無しさん:2013/08/08(木) 22:17:32.82
試験勉強に使いたいって意味だろ気にすんな
970デフォルトの名無しさん:2013/08/09(金) 02:07:59.95
VC使ってのに未だにfreadとか平気使う
私もいますよ。
971デフォルトの名無しさん:2013/08/09(金) 06:56:10.87
つうか何でもぶちんで動けばいいやって考えはやばいですか
972デフォルトの名無しさん:2013/08/09(金) 08:44:32.96
仕事じゃなきゃそれがいいよ
書かない、動かないのほうがやばい
973デフォルトの名無しさん:2013/08/10(土) 02:39:35.25
Cのアパコンパチなんでコンパイル、リンクが出来て
テストパスすればいんでしょうけど、
やぱC++のfstreamとかiosとかでやりたいってのはあるよねぇ。
974デフォルトの名無しさん:2013/08/11(日) 21:03:08.50
2ヶ月空いてるのに食いつき方きめえな
特におまえは>>959シコシココード書いてろ
975デフォルトの名無しさん:2013/08/11(日) 23:07:28.68
こいつこそ、5 日も空けてから入れるツッコミじゃないと思うが。
976デフォルトの名無しさん:2013/08/12(月) 00:16:32.62
誰が誰だか
977デフォルトの名無しさん:2013/08/12(月) 09:33:36.84
まあまあ
978デフォルトの名無しさん:2013/08/28(水) 09:43:27.31
野良関数はどこのファイルに書いていいのですか?
mainだけ?
ほかのクラスの.cppに適当に放り込んでもいいのですか?
979デフォルトの名無しさん:2013/08/28(水) 11:34:31.58
どこでもいいけど
後で困らないように分けといたら?
980デフォルトの名無しさん:2013/08/28(水) 12:07:23.13
ありがとうございます
コードは書いてあっても
ファイル分けまで説明してない本が多くて
基礎を読んだ後いざ作ろうとするとよくわからなくなってしまいました

>ほかのクラスの.cppに適当に放り込んでもいいのですか?
これはクラスのメンバ関数とは別にそのまま呼び出せるのでしょうか
981デフォルトの名無しさん:2013/08/28(水) 12:09:42.17
そのまま呼び出せなきゃ困るだろ
982デフォルトの名無しさん:2013/08/28(水) 12:16:52.56
はい
わかりました
983デフォルトの名無しさん:2013/08/28(水) 12:30:53.83
そこからか。
プロトタイプ宣言をヘッダにまとめて、使いたいとこでinclude
そのファイルでしか使わないなら、上の方にプロトタイプ宣言書けばいい。
関数定義を上に持っていく、というものぐさはあとで困るかもw
984デフォルトの名無しさん:2013/08/28(水) 12:53:58.79
俺は野良関数でも野放しにしないで、野良関数用のclass作っておくな
985デフォルトの名無しさん:2013/08/28(水) 13:36:40.11
ためしにでたらめなものでやってみましたが
そのプロトタイプ宣言は
ヘッダにも書けるし
mainにも書けるのですね
せっかく別ファイルに書いたのにmainに書いていては意味無いですが
986デフォルトの名無しさん