- 1 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:18:41 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.47【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1200464091/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 159 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:23:53 ]
- 例外処理の使い方がいまいち分かりません
例外を投げたらその処理の中で解決した方が良いのか それとも解決方法を使う側に投げっぱなしにしてしまうのか 例外をどういう形でthrowするのがいいのか なんというか感覚的に掴みにくいというかなんというか
- 160 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:25:33 ]
- 無用物
- 161 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:32:44 ]
- 参照を返すとオブジェクトが捨てられたときに
帰ってきたものも向こうに?
- 162 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:34:05 ]
- >>159
自関数の中でリカバリできるならcatchして処理すればよい そうでないなら呼び出し元にまかせる 普通のエラー処理と同じようなもんだ 自分で処理できるならして、処理できないなら呼び出し元にエラーコードなりなんなりをreturnするだろう エラーコードのreturnが例外のthrowに変わるだけ
- 163 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:34:37 ]
- >>161
日本語で
- 164 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:48:01 ]
- >>162
そういう感じで良いんですか 気軽に使えるなら使ってみようかな・・・
- 165 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:03:21 ]
- とある3種類の計測器をモニターするプログラムなんですが
似てるけど若干ちがう命令が3つあるとします この場合 クラス分けをしていくとき 計器の共通化持つクラスを基底として、それぞれの機能をもつ派生クラスを作るか 機能の共通処理をもつクラスを基底として、それぞれの計器にあわせて派生クラスを作るか どちらが今後計器が増える可能性を加味したとき、よい設計でしょうか
- 166 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:07:41 ]
- >>165
その計測器メーカに合わせるのが一番。 あるメーカは旧型機種の機能を改変しつつ新機能を作るかもしれないし、 あるメーカは旧型機種の機能を残しつつ新機能を作るかもしれない。 なんてことは兎も角、使い易いように作れば?
- 167 名前:138 mailto:sage [2008/02/08(金) 15:05:04 ]
- 返信遅くなってすいません!
>>140 STLは使ってなくてもこのエラーなんですよ… Hello Worldみたいな文字を出力するだけのプログラムでも 実行できないです。 >>142 Visual C++ 2008 Express Editionで実行したらできました! ありがとうございます。 >>154 マクロも使ってないので違うと思うのですが… Visual C++ 6.0を使い慣れているので どうにかして実行させたいのですが・・・
- 168 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 15:22:22 ]
- class Fruit;
class Apple : Fruit; std::vector<Fruit> fruits;を作ると 抽象クラスをインスタンス化できません。 と言われるです。どうするですか?
- 169 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 15:23:31 ]
- Fruit がそういうつくりになってるんじゃないの?
- 170 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 15:24:38 ]
- >>168
class Fruitを具体化してください。
- 171 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 15:36:19 ]
- std::vector<Fruit*> fruits;
- 172 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:14:45 ]
- コンパイラにBCCを使って数値計算をしているのですが、
しばらくプログラム実行していると、EXP: OVERFLOW ERRORと出ます。 これは、exp関数に入れた値がexp関数の扱える値(doubleの範囲)よりも大きいと言うことでしょうか?
- 173 名前:デフォルトの名無しさん [2008/02/08(金) 16:23:52 ]
- >>167
俺、解決方法知ってるんだが…
- 174 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:25:09 ]
- vevtorにvcの_com_ptrは入りますか?
- 175 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:59:55 ]
- コピー初期化もコピー代入もできるから問題ないはず。
- 176 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:22:37 ]
- すいませんちょっとお聞きしたいんですが、
#include <iostream> using namespace std; int main(){ char ss[80] = "これは文字列です"; cout << ss[0] << ss[1]; return 0; } ってやって、coutで「こ」って表示されないのは、どういう理屈でしょうか??
- 177 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:24:09 ]
- UTF-8 なら3バイト必要だが、そういうわけではなくて?
- 178 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:34:20 ]
- >>176
ひょっとしてなんか変な文字がでたりしてるか?
- 179 名前:176 mailto:sage [2008/02/08(金) 22:34:23 ]
- ぐは、そうだったんですね・・2バイトでいいんだと思ってました汗
cout << ss[0] << ss[1] << ss[2]; とやったらちゃんと表示されました。 ありがとうございましたm(_ _)m
- 180 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:40:31 ]
- ちなみにWindows上だと>>176のコードで「こ」はちゃんと出た。(bcc32 / gcc@cygwin)
- 181 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:44:58 ]
- それはお前がソースをSJISで書いてるだけ
- 182 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:55:36 ]
- >>175
ども。
- 183 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:42:34 ]
- UTF-8 だと全て3バイトって訳じゃないのが面倒なところだよな。
- 184 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:43:11 ]
- >>181
UTF-16 でも出るがな。
- 185 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:17:28 ]
- 他で聞いてきます
- 186 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:20:35 ]
- fatal error LNK1104:コンパイラは、ファイルd3d9.libを開けません
とでてしまいビルドできません 手動でリンカにd3d9.libを設定しましたが無理でした どうすればよいのか
- 187 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:33:08 ]
- ファイルはあるの?
- 188 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:40:25 ]
- pathの設定はしたか?
- 189 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:58:17 ]
- More Exceptional C++が届いたんだが
いきなり最初のコードがコンパイルできねえ 一気にやる気失くした。やっぱ古い本はこんな もんかねえ。
- 190 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 02:00:08 ]
- ちなみにコレ
VC++2008 g++ 4.0 でも不可 #include <iostream> #include <fstream> using namespace std; int main(int argc, char* argv[]) { (argc > 2 ? ofstream(argv[2], ios::out | ios::binary) : cout) << (argc > 1 ? ifstream(argv[1], ios::in | ios::binary) : cin ) .rdbuf(); return 0; }
- 191 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 02:06:46 ]
- 全く問題ないけど。まさかとは思うが、>190って2バイト空白入れたままで悪態ついているお馬鹿さん?
- 192 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 02:15:25 ]
- コンパイルできないときはエラーメッセージを書こう
なんてのは宿題スレでも徹底されてるような気がする。
- 193 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 02:17:41 ]
- gcc 4 で通らないな。
まあ当たり前だな。 右辺値の ofstream と左辺値の ostream(cout) だと 片方が右辺値なので右辺値にキャストして型を揃えようとするが、 この2つじゃどうやっても型を揃えられない。
- 194 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 02:20:34 ]
- VC だと右辺値の ofstream を
テンポラリオブジェクトを作成して ofstream& にキャストしてしまえるから(拡張機能) コンパイル通るかもしれん。
- 195 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 04:37:38 ]
- たぶん、ここでしか聞けないのかなと思い書き込みさせてください!
File1.cppで定義・使用している複数配列 double a[10][5] を他の ファイル(File2.cpp)でも共有して使用したいときって (File2.cpp) void CGridDlg::OnGdraw() //中で使用したい関数です { extern double a[10][5]; ・・・・・・・・ } と定義すれば使用できるものなのでしょうか。単配列(a[10]等)の時は同様の 方法で使用できたのですが。複数配列になると上記ではリンクエラー (LNK2001)がでてしまいます。環境はVC6++(MFCダイヤログベース)です。 超初心者です。Cの本を見てポインタなり、externなりが関係しそうかなと思った のですが、なかなかいい兆しが見えなくて助けを借りたい次第です。
- 196 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 07:49:02 ]
- >>191
ここに見やすく貼るために全角にしてるんよ >>192 VC++2008でのエラーメッセージだがprivateメンバーにアクセスしようとしてる らしい。 error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : private メンバ (クラス 'std::basic_ios<_Elem,_Traits>' で宣言されている) にアクセスで きません。 >>193 ostream(cout)の意味が分からないんですが。3項演算子 A ? B : C のBがrvalueでCがlvalueだからC(ここではcout)を右辺値にしようと するということかな? >>194 昔の規格なりコンパイラではOKだったのかもしれんです。
- 197 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 08:25:12 ]
- >>191
- 198 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 08:27:28 ]
- 空白orタブ <-> /**/
の置換スクリプトを希望
- 199 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 08:28:26 ]
- >>197
>昔の規格なりコンパイラではOKだったのかもしれんです。
- 200 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 08:55:15 ]
- >>196
左辺値の ostream の値である cout って意味ね。 エラーの理由はそれで問題ない。
- 201 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:50:51 ]
- >>195
externで共有させるのはお勧めしない。 他の関数で配列を参照させるためには、ポインタを渡せばよい。 関数内のローカル変数へのポインタは、その関数実行中にしか有効にならないから、一時的にしか参照・共有できない。
- 202 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:59:52 ]
- >>195
CGridDlg の private メンバ変数にして、 a の取得関数を用意すれ。 class CGridDlg { public: typedef double Hoge[5]; Hoge* GetA() { return m_a; } const Hoge* GetA() const { return m_a; } private: Hoge m_a[10]; }; Hoge* a = grid_dlg.GetA(); a[0][0] = 1;
- 203 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 10:37:35 ]
- 猫でもわかるを買ったんですが、
超初心者の俺にはさっぱりわかりません。 何かわかりやすい本などあったら教えてください。お願いします。
- 204 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 10:39:09 ]
- >>203
ちなみにC言語です。よろしくお願いします。
- 205 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 10:41:09 ]
- >>203
その本で分かりにくいとかじゃなくて さっぱり分からないというのであれば無理です、あきらめてください それより多少分かりやすいと評判のものもありますが、大差はありません それとも環境が用意できないとかそういうことですか?
- 206 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 11:54:33 ]
- >>203
その本は読んだ事はないが、サンプルをぽちぽち手で入力して実行してみなされ。 手で入力して試すのが肝心。 付属CDとかダウンロードをクリックして終わりじゃ絶対に理解できない。
- 207 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:26:37 ]
- >>200
なるほど。3項演算子は片方がrvalueのときは結果もrvalueになるという ことですね。 試したところでは、static_cast<ostream>(cout)やostream obj(cout); はできないみたいでが、そもそもostreamオブジェクトは生成できないも のなんですか?だとしたらostreamオブジェクトであるcoutはどのように 作成されたのですかね?
- 208 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:37:27 ]
- コピーしようとすると見るエラーだな
- 209 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:55:53 ]
- >>207
ostreamやistreamには、引数を取るコンストラクタがある。 coutやcinはそれを使って作られるんだろう。
- 210 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:04:36 ]
- >>207
static_cast<ostream&>(cout) とか ostream out(cout.rdbuf()); ならできる
- 211 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:06:27 ]
- >>209
>>210 ストリームとストリームバッファには弱い結合(ストリームバッファの同期) と強い結合(ストリームバッファの共有)ってのがあるみたいですね。 おそらく、コンソールデバイスに関連付けられたストリームバッファ (例えばcdevという名前だったとして)というのがシステムには存在し ていてcoutは、ostream cout(&cdev); というふうに定義されてる んでしょうね。ストリームオブジェクトをコピーできない理由は 無制限にストリームバッファをコピーしたり(メモリの浪費)、 暗黙のうちに共有できたりしたら問題が起こるからかなと思いました。
- 212 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:07:47 ]
- ストリームオブジェクトをコピーできない理由は
無制限にストリームバッファをコピーしたり(メモリの浪費)、 暗黙のうちに共有できたりしたら問題が起こるからかなと思いました。 は>>208さんへのレスでした。
- 213 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:24:28 ]
- coutをコピーするというのは意味がわからん、ってのもあるかもね
コンソール自体が2個に増えるわけじゃあるまいし
- 214 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:33:48 ]
- >>198
つかってやってください ttp://pc11.2ch.net/test/read.cgi/unix/997605845/55
- 215 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:41:15 ]
- >>205
環境が用意できないです。 それでもあきらめた方がいいですか?
- 216 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:49:08 ]
- >>203
そのままの意味が分からないけど、HDVも圧縮された素材ですよ。 H.264とは異なる方式で。 ttp://ja.wikipedia.org/wiki/HDV
- 217 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:52:43 ]
- あ、なんかすげー誤爆ってた。失礼orz
- 218 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:58:08 ]
- 環境が用意できないっつー意味がわからん。
Macしか持ってないのにWin32前提の入門書買っちゃったってことかね?
- 219 名前:203 mailto:sage [2008/02/09(土) 17:03:06 ]
- すいません。アフォで…
自分は今、第二章で止まってます。 と言うのも、いきなり「では、ソースを見てみましょう」となり、 「開発環境によってコンパイルの手順が異なります」 ↑この時点でわかりません。 自分には向いてないのかな…orz
- 220 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:05:32 ]
- void hoge(const char* name){ char* piyo = name + (sizeof(char) * 5); }
こんなようなことはなんで出来ないんでしょうか? 文字列nameの5文字目のポインタ(&(name[4]))をpiyoに格納したいです error C2440: '=' : 'const char *' から 'char *' に変換できません。 このようなエラーが出るのですが正直ここでなんでこのエラーがでるんだ?といった感じです
- 221 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:12:11 ]
- const char *piyo
- 222 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:13:49 ]
- >>220
書き換え可能なポインタ(char *)に書き換え不能なポインタ(const char *)を代入しようとしているからです。 void hoge(const char * name) { char const * piyo = & name[4]; } こう書けば問題ありません。
- 223 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:14:36 ]
- char *のconst性を除去してるから。入れたいならpiyoもconst char *にする。
hoge内で文字列を弄りたいなら引数をchar *にするべき。 引数は変えられず、どうしてもchar *が必要ならconst_cast<char *>(最後の手段)
- 224 名前:220 mailto:sage [2008/02/09(土) 17:17:20 ]
- >>221-223
ありがとうございます。 よく考えたらいじる必要はないのでpiyo側をconstにしました
- 225 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:18:01 ]
- >>219
とりあえず、なにか揮発環境は持っているのか?
- 226 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:18:34 ]
- > name + (sizeof(char) * 5)
彼は大丈夫だろうか。
- 227 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:19:23 ]
- >>225
はい。 ジクロルボスは揮発するので大丈夫です。
- 228 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:22:30 ]
- 俺のチームのメンバも先週揮発したぜ。
- 229 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:23:57 ]
- ちょっと待て、それは「蒸発」じゃないのか?
- 230 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:24:28 ]
- >>226
それって問題あるのか?パッと見わからん
- 231 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:26:23 ]
- >>230
char であるときには問題にはならないが int とかになると…
- 232 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:26:24 ]
- >>230
>220にはこう書いてある。 >文字列nameの5文字目のポインタ(&(name[4]))をpiyoに格納したいです
- 233 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:26:31 ]
- >>229
そうだな。揮発は性質で、蒸発は現象だからな。
- 234 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:27:47 ]
- >>231
いや、だいじょうぶだろw ちゃんとintの大きさに対応してくれるよw
- 235 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:27:55 ]
- >>230
ポインタは自動的にそのサイズ分進むから、sizeofを掛ける必要はない、とかかな?
- 236 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:28:25 ]
- >>234
ごめん間違えた
- 237 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:28:46 ]
- ConceptGCCで、190のコードのofstreamとifstreamを
ostream&&とifstream&&にstatic_castしたものを食わせたらどうなるかと試してみたが、 エラーだったorz。右辺値参照はライブラリまで及んでいなかった。
- 238 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:29:06 ]
- sizeof(*name)にするべきとか。
- 239 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:29:46 ]
- >>238
阿呆ですか?
- 240 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:30:00 ]
- >>219
適当に c 入門 初心者とかでぐぐれば環境の入れ方から説明してるとこがきっと見つかるよ
- 241 名前:203 mailto:sage [2008/02/09(土) 17:46:21 ]
- >>225
>>240 すいません。もう一度調べなおしてみます。
- 242 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:47:29 ]
- >>238-239
&5[name] でいいだろ。
- 243 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:49:48 ]
- >>242
>232
- 244 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:58:03 ]
- char ch='a';
cout <<(int) ch << '\n'; // 97 int dt=97; cout << (char)dt<< '\n'; // 'a' とできるのに、 wchar_t ch1='あ'; cout <<(int) ch1 << '\n'; // 33340 int dt1=33440; cout << (wchar_t)dt1<< '\n'; // 0x82a0 と'あ'がでないで、82a0が出るのはなぜですか? (82a0は33440の16進です)
- 245 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:03:03 ]
- class test{
char* str; int len; public: test(const char* str); }; test::test(const char* str0){ len = strlen(str0); str = new char[len+1]; } とすると (msvcr80d.dll) でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xccccccc0 を読み込み中にアクセス違反が発生しました。 こんなようなエラーがでます、いろいろとコメントアウトして試してみていたのですが str = new char[len+1];部分でエラーが出ているようです、これを str = new char[256];のようにするとエラーはでないのですが、定数でなければならないとかないですよね? 一体なんででしょうか?
- 246 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:10:38 ]
- 書いてないところのバグを見つけろって言う話?
- 247 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:10:39 ]
- >>245
そういう時は先ず、str0の長さが実際にいくつだったのかを確認しましょう。
- 248 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:10:53 ]
- >>245
その部分は問題ないように見える。 256にするとエラーが出ないところからみて、 どこかでバッファオーバーフローしてるんじゃない?
- 249 名前:245 mailto:sage [2008/02/09(土) 18:12:34 ]
- >>246-247
えっとすみません、str0には固定の文字を入れるようにして試しています 16文字の文字列でして、コンストラクタ内でlenの長さを表示させるときちんと16文字になっています。 また、同じくコンストラクタ内でstr0を表示させるときちんと渡した16文字の文字列が表示されます
- 250 名前:245 mailto:sage [2008/02/09(土) 18:15:42 ]
- main内に
char* buff = "abcdefghijklmnop"; test hoge(buff); これだけです 余計な部分を全てコメントアウトしてるのでこれでコードは全てです
- 251 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:16:08 ]
- 実行部分をみせろ。
test test1("abcdabcdabcdabcd"); ならまったく問題ないはず。
- 252 名前:251 mailto:sage [2008/02/09(土) 18:22:16 ]
- ごめん、違うな
- 253 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:23:47 ]
- >>245
そこを変えたら動くからといって、バグの出元がそこだとは限らない ぜんぜん関係なさそうな別の場所も疑う必要がある
- 254 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:24:42 ]
- strにはアクセスしないの?
test内でstrcpyしなくていいのか? なにがやりたいんだ?
- 255 名前:245 mailto:sage [2008/02/09(土) 18:36:41 ]
- >>253
提示した部分以外をコメントアウトしているのですがエラーが出る状態です >>254 その部分が原因かとも疑ってコメントアウトさせているのですがエラーが出る状態です test::test(const char* str0){ len = strlen(str0); str = new char[len+1]; strcpy_s(str, len+1, str0); printf("%s\n", str0); printf("%d\n", len); printf("%s\n", str); } こんな具合にしますと abcdefghijklmnop 16 abcdefghijklmnop と表示されますがしっかりエラーがでます
- 256 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:44:34 ]
- mainってことは、MFCとかは使ってないわけか……
リビルドしたら直るとか言う落ちはないよな?
- 257 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:44:45 ]
- >>255
余計なincludeもコメントアウト。 さらにエラーが無くなるまでコメントアウト。 新規プロジェクトと作成して、必要なコードだけ貼り付けて動かしてみる。
- 258 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:44:52 ]
- おかしいなあ、ちゃんと動くぞよ。
- 259 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:46:07 ]
- class test{
char* str; int len; public: test(const char* str); }; test::test(const char* str0){ len = strlen(str0); str = new char[len+1]; } int main(int, char**) { char* buff = "abcdefghijklmnop"; test hoge(buff); return 0; } これで、エラーになるって事?
|

|