08/07/28 11:19:21
C言語だけなら算数が出来れば十分
3Dやら暗号やら圧縮やらを扱いたいなら数学が必要になってくるかも
447:デフォルトの名無しさん
08/07/28 11:21:27
446さんありがとうございます。
448:デフォルトの名無しさん
08/07/28 11:29:53
C言語で仮に3Dアクションゲームを造るとすると最低限高校1年の数学と物理が理解できればチャレンジしても無謀ではないですか?
数学:sin cos tan(三角関数?)等
物理:ベクトル等
449:デフォルトの名無しさん
08/07/28 11:34:01
うん、あと行列がわかってれば
物理演算しようってわけじゃないんだから、完全な理解も必要なし
450:デフォルトの名無しさん
08/07/28 11:39:08
ライブラリ使えば自分で計算する必要ももちろんないしね
451:デフォルトの名無しさん
08/07/28 13:18:58
まぁ行列分かってれば中学生でもできるよ。
452:デフォルトの名無しさん
08/07/28 14:03:08
まぁそれをいったら
ベクトルが分かっててプログラミングができるなら小学生にもできるよ、って話だけどな
453:デフォルトの名無しさん
08/07/28 14:04:41
ベクトルも行列もプログラミングも分からない大学生にはできないといいたい訳だな
454:デフォルトの名無しさん
08/07/28 14:13:46
分からなきゃ勉強するまでさ。
今までだってそうやってきただろ?
455:デフォルトの名無しさん
08/07/28 14:15:05
>>454
>>453 に例示されるような人はおそらく勉強しないでしょう
456:デフォルトの名無しさん
08/07/28 14:27:06
スレ違いだと思いますが流れ的に質問させてください。
CとC++とwindowsプログラミングを一通り勉強したので
次にDirectXの勉強をしようと思っているのですが、勉強する前に三角関数・ベクトル・行列を復習してから(曖昧なので)
DirectXの勉強をしたほうが理解が深まると思うのですがどう思いますか?
先輩方アドバイスよろしくお願いします。
457:デフォルトの名無しさん
08/07/28 14:29:49
先にDirectXのチュートリアルでもやった方が良い
458:デフォルトの名無しさん
08/07/28 14:30:12
>>456
目的にもよりますが Direct3D を勉強しながら分からないところを調べるほうがオススメ
459:デフォルトの名無しさん
08/07/28 14:30:21
DirectX進めながら解らないところが出るたびに数学の教科書を見るのでも別に構わんとは思う
460:デフォルトの名無しさん
08/07/28 14:33:25
1からやるわけでもないしな。
思い出すのなら必要なことが出てからでも、今やってることが止まることも無いでしょう。
461:デフォルトの名無しさん
08/07/28 14:37:48
DirectX=3Dじゃないと思うんだけど
462:デフォルトの名無しさん
08/07/28 14:38:01
>>457 >>458 >>459 >>460
アドバイスありがとうございます。
この夏休みでDirectXの基本をマスターして3Dゲームが作れるようにがんばります。
463:デフォルトの名無しさん
08/07/28 14:38:45
>>461
そうなんですか?
勘違いしていたみたいです・・。
もう少し調べてみます。
464:デフォルトの名無しさん
08/07/28 14:43:38
>>461
DirectXの描画は基本3Dじゃなかったっけ
465:デフォルトの名無しさん
08/07/28 14:47:03
Drawが葬られたからね。
466:デフォルトの名無しさん
08/07/28 14:48:25
実はDirectSoundだけ使いたい・・・なんてことはないか
467:デフォルトの名無しさん
08/07/28 14:49:42
>>464-465
そうだった
昔2D描画用のがあったんだけどもうなくなったんだね
あれ結構評判良かったのに
468:デフォルトの名無しさん
08/07/28 16:02:03
今でもDirectDrawは使えるし、地味にアップデートもされてる(もうされないだろうけど)
ドキュメントが無くなったけどな
469:デフォルトの名無しさん
08/07/28 16:38:04
引数←読み方インスウだと思ってたけど
ヒキスウって最近知った
470:デフォルトの名無しさん
08/07/28 16:48:16
returnされる値は
カエリチ?ヘンチ?
471:デフォルトの名無しさん
08/07/28 16:48:56
返り血
472:デフォルトの名無しさん
08/07/28 16:53:39
>>469
どーぞくハケーン
473:デフォルトの名無しさん
08/07/28 16:54:36
独学でやってたってことかな
授業とかでやったら確実に発音するでしょ
474:デフォルトの名無しさん
08/07/28 16:58:05
>>470
俺はモドリチ
475:デフォルトの名無しさん
08/07/28 17:00:15
普通、戻り値だよな
476:デフォルトの名無しさん
08/07/28 17:03:54
オレも返り値は返り血に聞こえるから戻り値
477:デフォルトの名無しさん
08/07/28 17:05:45
リターンチだろ
478:デフォルトの名無しさん
08/07/28 17:07:41
どれも同じだ
479:デフォルトの名無しさん
08/07/28 17:12:31
スタックの血を浴びて ~社会不適応者のデスマーチ奮闘記~
480:デフォルトの名無しさん
08/07/28 17:37:50
新ジャンル:仕事人間サスペンスホラー
481:デフォルトの名無しさん
08/07/28 20:39:33
ああ、よく考えたら俺も戻り血だったわ。
482:デフォルトの名無しさん
08/07/28 20:52:11
オレは「戻り値として0を返す」とかいう。
でも「返り値として0を戻す」はいったことないな。
483:デフォルトの名無しさん
08/07/28 21:21:23
俺は「返り値として」には違和感がある
返り値を使うなら「返り値をaに戻す/返す/当てる」とかは言う
返り値の値に言及する時は思いつかない
484:デフォルトの名無しさん
08/07/29 00:56:44
const std::string& GeRefOfFuncStaticString(int n)
{
static std::string str = boost::lexical_cast<std::string>(n);
return str;
}
const std::string g_strNotFound("NotFound");
const std::string& GeRefOfFuncStaticString2(int n)
{
static std::map<int,std::string> mapStr;
if( mapStr.empty() )
{
mapStr.insert( std::make_pair(100, "100") );
mapStr.insert( std::make_pair(101, "101") );
}
std::map<int,std::string>::const_iterator itrFound = mapStr.find(n);
return itrFound != mapStr.end() ? itrFound->second : g_strNotFound;
}
int _tmain(int argc, _TCHAR* argv[])
{
std::cout << GeRefOfFuncStaticString( 100 ) << std::endl; // 表示: 100
std::cout << GeRefOfFuncStaticString( 101 ) << std::endl; // 表示: 100 ← 関数内の static 変数の参照を取り出せない
std::cout << GeRefOfFuncStaticString2( 100 ) << std::endl; // 表示: 100
std::cout << GeRefOfFuncStaticString2( 101 ) << std::endl; // 表示: 101
return 0;
}
map を使った場合の GeRefOfFuncStaticString2( ) は意図した動作になるんですが,たまたまでしょうか?
485:デフォルトの名無しさん
08/07/29 01:24:05
>std::cout << GeRefOfFuncStaticString( 101 ) << std::endl; // 表示: 100 ← 関数内の static 変数の参照を取り出せない
関数内のstatic変数の参照を取り出してますよ。
486:デフォルトの名無しさん
08/07/29 01:43:11
>>485 解答ありがとうございます.恥ずかしながら static に関してすごい勘違いをしていたようです.
初期化が一度しか行われないんですね.以下のようにして GeRefOfFuncStaticString() でも望みどおりの
動作が出来るようになりました.
有難うございました.
const std::string& GeRefOfFuncStaticString(int n)
{
static std::string str;
str = boost::lexical_cast<std::string>(n);
return str;
}
487:デフォルトの名無しさん
08/07/29 03:24:06
a
488:デフォルトの名無しさん
08/07/29 07:50:00
static変数が緊急対応以外で必要になったときは設計ミス。
489:デフォルトの名無しさん
08/07/29 08:06:38
何故static変数にいちいち保存しているのかが謎。
490:デフォルトの名無しさん
08/07/29 09:24:49
便乗質問なんだけど
const std::string& GeRefOfFuncStaticString(int n)
{
static std::string str = boost::lexical_cast<std::string>(n);
return str;
}
これ static のところ、いつ初期化されるんだ? 今までプログラム
起動時(main以前)だと思ってたんだが、nが関数の呼び出し時に
決まるじゃん。
内部で
if(関数の初回呼び出しなら){
str = boost::lexical_cast<std::string>(n);
}
みたいなコードにコンパイルされるわけ?
>>484の挙動見ているとそう見えるんだが…
491:デフォルトの名無しさん
08/07/29 09:36:58
>>490
それであってる。
ちなみに初期化についてスレッドセーフである保証は無いので、
マルチスレッドのプログラムで排他せずにstatic変数使ったら、
いつ異常動作してもおかしくない。
492:デフォルトの名無しさん
08/07/29 10:07:55
標準ライブラリのメンバ関数までが詳細に載ってるページってありますか?
探したけど俺の目が悪いんだろうか、見つかりません;;
だれか教えてください
もしくは、この質問に答えてください。
istringstreamのオブジェクトに、文字列を代入(?)するとき、
istringstream is(string("abc"));
のように初期化ではなくて、あとから代入することはできますか?
やり方を教えてください。
493:デフォルトの名無しさん
08/07/29 10:18:55
>>491
いつの間にそうなったんだ…
関数呼び出し時に初回判定が入るんじゃあパフォーマンス
に悪影響があるだろうが。
func(){
static int a = 100;
}
は昔どおり初回判定なんか入らないよな?
494:デフォルトの名無しさん
08/07/29 10:34:42
>>493
昔から変わってないよ。その int の例でも、関数内で値の変更があったり、
ポインタや参照を外に渡してしまっている場合は初回判定が必要になるでしょ。
495:デフォルトの名無しさん
08/07/29 10:35:44
昔どおりも何も、単に最適化で判定が消えてるだけだろ
496:デフォルトの名無しさん
08/07/29 10:37:38
>>495は>>493宛
497:デフォルトの名無しさん
08/07/29 10:38:57
>>492
istringstream ではなくて stringstream を使ってみては?
498:デフォルトの名無しさん
08/07/29 10:41:57
>>492
URLリンク(www.cppreference.com)
URLリンク(www.cppll.jp)
URLリンク(msdn.microsoft.com)
is.str("abc");
499:デフォルトの名無しさん
08/07/29 10:42:21
定数での初期化なら、初回実行時でなくmainの前にされたりするよ。
その辺の最適化は処理系定義。
引数で初期化したら、まず確実に判定が入る。
500:デフォルトの名無しさん
08/07/29 11:07:28
std::wofstreamを使ってテキストに書き込む時自動的にファイルの
頭にBOMを追加してくるみたいなものって存在しますか?
自分で先に書くのが普通でしょうか?
自分でFF FE をファイルと開いて書き込んでから
wofstreamを使うと先に書き込んだ2バイトが消されてしまい途方にくれて
おります・・・・
501:デフォルトの名無しさん
08/07/29 11:09:44
自分で先に書くのが普通。
502:デフォルトの名無しさん
08/07/29 11:22:18
std:ios::app だっけ?
503:デフォルトの名無しさん
08/07/29 11:22:48
>>499
つまり、関数内のstatic変数の初期値が定数じゃない限り、初回確認用のフラグもstatic領域に用意されるわけだな。
504:デフォルトの名無しさん
08/07/29 11:36:53
>>501-502
std:ios::appでBOMが残せましたmありがとうございます!
505:デフォルトの名無しさん
08/07/29 11:43:28
>>494
一連のレスは理解できるのだが、
> int の例でも、関数内で値の変更があったり、
>ポインタや参照を外に渡してしまっている場合は初回判定が必要
これが分からん。
プログラムロード時にaが100になるでしょ。それで、関数内で
値の変更があったり、 ポインタや参照を外に渡してしまっている
場合はどうして初回判定が必要になるの?
506:デフォルトの名無しさん
08/07/29 11:48:26
>>505
例えばこんなケース。
int func(int n)
{
static int a = n;
return a;
}
int main()
{
for (int a = 2; a <= 5; ++a) {
printf("%d, %d\n", a, func(a));
}
return 0;
}
507:494
08/07/29 12:23:54
>>505
変数宣言通過時に初期化されるんなら初回判定が必要かと思ったんだけど、
プログラム起動時に初期化してもいいみたい。
ってことで >494 は間違いで、初回判定が必要になるのは初期値が定数式じゃないときね。
ごめんよ >>506
508:デフォルトの名無しさん
08/07/29 14:13:54
横から失礼します
ファイル中のN個の値で、配列a[N]を作りたいんですが
うまいやり方が思いつかないので、どなたか教えていただけませんか?
509:デフォルトの名無しさん
08/07/29 14:15:51
>>508
mallocの使い方を聞いてるのか?
510:デフォルトの名無しさん
08/07/29 14:19:20
malloc( new? ) を使えば出来るんですね。やってみます。
511:デフォルトの名無しさん
08/07/29 16:37:39
std::vector<型> a(N);でもよいぞ
512:デフォルトの名無しさん
08/07/29 18:48:40
ワイマール憲法を構造体で記述せよ
という夏休みの課題が出たのですが、何から始めていいかさっぱりわかりません・・・・。
だれか御助けを・・・・。
513:デフォルトの名無しさん
08/07/29 18:49:31
イクイク、ワイマール憲法
514:デフォルトの名無しさん
08/07/29 19:32:11
struct kenpoo {
int Y;
int O;
};
515:デフォルトの名無しさん
08/07/29 20:45:26
>>512
残念ですが、その課題を出した先生は脳に異常をきたしています・・・。
まともな対話は不可能でしょう。課題の提出は諦めるほかないでしょう。
516:デフォルトの名無しさん
08/07/29 21:39:36
みんなイクイク、ベルサイユ条約
517:デフォルトの名無しさん
08/07/29 22:07:51
ああ、1919か
518:デフォルトの名無しさん
08/07/29 22:26:11
class hoge{
private:
std::list<int> foo;
public:
void setfoo(std::list<int> foo){
this->foo.clear();
std::list<int>::iterator itr;
for(itr=foo.begin();itr!=foo.end();itr++)
this->foo.push_back(*itr);
}
std::list<int> getfoo() const{
return foo;
}
};
int main(){
hoge hoge0;
std::list<hoge> hogehoge;
std::list<int> tmp;
tmp.push_back(1);
tmp.push_back(2);
hoge0.setfoo(tmp);
std::list<int>::iterator tmpitr = hoge0.getfoo().begin();
hogehoge.push_back(hoge0);
std::list<int>::iterator itr = (*hogehoge.begin()).getfoo().begin();
std::cout << *itr << "," << *(++itr);
}
このコードで、最後に"1,2"と表示されて欲しいところが、"0,0"となってしまいます。
どこが悪いのかがわからず困っています。よろしければ教えていただけないでしょうか…。
519:デフォルトの名無しさん
08/07/29 22:30:32
ほう、それがワイマール憲法か。なるほど
520:デフォルトの名無しさん
08/07/29 22:34:42
getfooの戻り値であるhoge::fooの一時コピーが次の文に移る間までに破棄されてしまうからと、
ひとつの式の中でitrを代入と参照の両方してるから
521:518
08/07/29 23:03:49
>>520
ありがとうございます。
最後にcoutするところで、itrが無効化してしまってるということでしょうか。
一時コピーが破棄されるタイミングがイマイチわかりません。
たびたびすいません…。
522:デフォルトの名無しさん
08/07/29 23:15:52
>>521
完全式の終わりで破棄される
523:デフォルトの名無しさん
08/07/29 23:39:25
だれか、C++のえろい人
百聞は一見にしかずだから
>>518のコードを希望通りに動くように修正汁!
すまん、俺C++わからんから><
524:デフォルトの名無しさん
08/07/29 23:44:32
getfoo()の戻り値を参照型に換えたら?
525:デフォルトの名無しさん
08/07/30 00:02:27
C言語勉強のためにプログラムを作成しました。
が、printf("hello")の時点で壁にぶちあたりました。
正しくコードを入れたはずですが、実行して表示されるのは、
2chアップローダ:URLリンク(www-2ch.net:8080)
です。exeと、badが同時に出現するのは何故?さらHELLOが表示されていないのは何故?
「苦しんで覚えるC言語」を参考にやってみたのですが、いきなり苦しいです。
神様助けてください。。。
コンパイラ:Borland C++ Compiler
エディタ:CPad for Borland C++Compiler
526:デフォルトの名無しさん
08/07/30 00:17:17
さらに
std::cout << *itr << ",";
std::cout << *++itr;
と二行に分けると動く。
その理由は、((std::cout.operator<<(*itr)).operator<<(",")).operator<<(*++itr)
というようにちょっと考えるとインクリメント演算子は後から適用されるように思えるが、
インクリメント演算子は副作用完了点に達するまでのどの段階で働いても
構わない事になっているからである。
もっと言えば>>518の動作は未定義である。
527:デフォルトの名無しさん
08/07/30 00:18:11
>>525
なんで start ってするの?compile したのは a.exe とかじゃない?
ところでその本には int main(void) 推奨なの?
528:デフォルトの名無しさん
08/07/30 00:19:57
start.cをコンパイルしたからstart.exeなんじゃないの
529:デフォルトの名無しさん
08/07/30 00:21:51
start.cなんだからbcc32ならstart.exe吐いてくれるはず
まあたぶん./startってやったら動くんじゃない
530:デフォルトの名無しさん
08/07/30 00:24:31
例えば
#include <iostream>
int main()
{
int i = 1;
std::cout << i << ' ' << ++i << std::endl;
}
のようなプログラムは "1 2" と出力しそうであるが、実際は未定義動作であり、
無理矢理動かすと大抵のコンパイラでは直感に反して"2 2"と表示されるのも
同じ理由による。
531:デフォルトの名無しさん
08/07/30 00:25:04
読み返して言葉足らずでした。補います。
printf("hello");では上記URLのようにexeと、badが同時に出現し、また何も表記が無い状態でしたが
printf("hello\n");では「HELLO」が改行ありで表記されました。
また、printf("%d",100); printf("円\n");では改行ありで「100円」が表記されました。
私の見解では、ただ単に参考にした構文が間違っている(\nが必要だが書かれていなかっただけ)
のだと思いますが。。。意見を聞かせてください。
532:デフォルトの名無しさん
08/07/30 00:26:06
コマンドプロンプトにstartってコマンドあるから
start.exeはまずくない?
533:デフォルトの名無しさん
08/07/30 00:26:14
>>531
printfのあとに
fflush();つけたらどうなるかな?
534:533
08/07/30 00:27:06
いろいろ間違えたごめん忘れてください
535:デフォルトの名無しさん
08/07/30 00:27:24
(なぁなぁ、badって何?)
536:デフォルトの名無しさん
08/07/30 00:32:52
あ、startじゃぁまずいですか^^;
aに変えました。そしたらbatのみになりました。
参考元URL:URLリンク(homepage3.nifty.com)
しかも、printf("hello");で改行なし「hello」が表示されました。
お騒がせ申し訳ありません。m(--)m参考元さんも申し訳ありません。m(--)m
537:デフォルトの名無しさん
08/07/30 00:42:51
unixでtestという実行ファイルを作ってハマった当時の俺
538:デフォルトの名無しさん
08/07/30 00:44:24
あるある
うん。あるある
539:デフォルトの名無しさん
08/07/30 00:44:46
batやらbadやら恥ずかしいことばかり書き込んでしまいました。
セキュリティーホールがあれば入りたいです。
startをaに変更すると、
URLリンク(www-2ch.net:8080)
な感じになりました。これで夜も安心して眠れます。
>>527 startにしたのは無知だからでした。「手始めにスタート」のつもりでした。
この本というかサイトではそうでした。他のサイトを見てみると他の記述もありましたが、
最初に見たこのサイトの記述で貫こうと思います。
>>532 決定的な回答ありがとうございます。小鳥の1歩ほど前進することができました。
終わりなきC言語を心ゆくまで堪能したいと思います。親切にしてくださってありがとうございます。
>>534 いっしょにセキュリティーホールに入りませんか。
>>535 完全に撃ち間違いです。申し訳ありま栓。
540:デフォルトの名無しさん
08/07/30 02:16:56
すいません質問です。
ソラリスでは使えてたのですが、Linuxだとエラーが出てしまってgoogle検索したのですがいい対応策が見つかりません。
newとdeleteは演算子なのですが、
例
string * aaa;
というのを.hで宣言し
.ccにて
コンストラクタでNULLクリア
main処理にて値を入れる場合と入れない場合があるのですが、
値を入れない場合に、
デストiラクタでaaaをdeleteしようとすると、落ちてしまいます。
SolarisからLinuxに入れ替えようとしているので、Solarisでは通るのにLinuxでは通らないという事はあるのでしょうか。
簡単にプログラムの例を
classで、
string * aaa; を宣言しておき、
コンストラクタで、aaaをNULL初期化します。
mainルーチンで、aaaにファイルから文字列を取得するのですが、
該当しない場合はaaaはNULLのままとなっています。
デストラクタで、
if(aaa){
delete aaa;
}
とやっているのですが、そこで落ちてしまいます。
よろしければアドバイスお願いします。
541:デフォルトの名無しさん
08/07/30 02:19:23
コンパイラはgccです
542:デフォルトの名無しさん
08/07/30 02:19:37
VC++を使用しているのですが、
char ItemObject[1024];
ItemObject = "TEST";
listBox->Items->Add(ItemObject);
とするとコンパイルできません。
プログラミング初心者で、どうすればいいのか分からず困っています。
どなたか、助けて下さい。よろしくお願いします。
543:デフォルトの名無しさん
08/07/30 02:20:01
delete演算子は対象のポインタが 0 の時は何もしないで
戻るようになっている。
従って if文は不要。原因は他の所にあるのではないか。
544:デフォルトの名無しさん
08/07/30 02:23:19
>>542
listBox->Items->Add( gcnew System::String(ItemObject) )
はじめから System::Stringを使え。
それより、このスレはC++/CLIはOKなのかな?C++/CLIはC++とは別物だから明記しておくように。
545:デフォルトの名無しさん
08/07/30 02:28:22
>>543
>>delete演算子は対象のポインタが 0 の時は何もしないで
>>戻るようになっている。
これは知ってはいたのですが、チェックしてしまうクセがついてしまっています。
>>従って if文は不要。原因は他の所にあるのではないか。
やはり原因は他にあるのですかね。
Soralisで通っててLinuxでは通らないので、規格の違いかと思い質問させてもらいました。
(LinuxはSoralisと比べて厳しいので
もうちょっと調べてみます。
アドバイスありがとうございます。
546:デフォルトの名無しさん
08/07/30 02:29:17
>>540
クラスも無いのにコンストラクタとか言ってるのがおかしい。ソース晒せ。
547:デフォルトの名無しさん
08/07/30 02:33:41
memsetでクリアしてたりする?
548:デフォルトの名無しさん
08/07/30 02:39:30
>>546
class hoge{
string * aaa;
}
mainでaaaに文字列を取得
(ない場合は取得しない
hoge::hogeでaaaにはNULLを設定
oge::~hogeで
if(aaa){
delete aaa;
}
としています。
>>547
>>memsetでクリアしてたりする?
memsetはやっていないですね。
文字列取得にはc_str()を使用しています。
549:デフォルトの名無しさん
08/07/30 02:42:52
>>548
hoge にデストラクタもコンストラクタもねーじゃねーか。
ソースを省くな。問題が再現する完全なコードを貼れ。
550:デフォルトの名無しさん
08/07/30 02:51:20
>>549
すいません、完全なコードを張る事ができないので省略してました。
何かしらヒントでもあればと思い質問しました。
SoralisとLinuxの互換性がまだ完全に把握できていないので
分かる人がいればと思い。
もうちょっと自分で調べてみます。解決したら役に立つかわかりませんが書き込みます。
551:デフォルトの名無しさん
08/07/30 02:59:06
>>550
問題が再現する最小のコードを作ってもらわないと、エスパーでもなけりゃわからない。
OS間の互換性に原因があると思ってるようだが、どうせ違う。
そういうコード作るのは相談のためでもあるが、基本的な調査の方法でもあるんで、
たいていは作ってる間に自分で気づくんだけどな。
552:デフォルトの名無しさん
08/07/30 03:10:02
全くのあてずっぽうだが、
hogeが意図せずコピーコンストラクタでコピーされてて、
2箇所でaaaがdeleteされているとかないだろうか。
deleteしたばかりで領域が再利用されていない場合に
2回目のdeleteでもエラーにならない処理系は存在する。
Soralisが落ちない処理系で、linuxが落ちる処理系だとすると・・
553:デフォルトの名無しさん
08/07/30 03:19:04
>>552
一応gdbでも処理追ってみたのでコンストラクタが2度通ってる事はないみたいです。
554:デフォルトの名無しさん
08/07/30 03:23:12
privateでコピーコンストラクタをきってみたら?
デフォルトのコピーコンストラクタが使われているなら、
普通のコンストラクタは通らないよ。
stringがstl::stringだったらポインタで持つ意味があるのかは検討したほうがいいな。
555:デフォルトの名無しさん
08/07/30 03:26:42
>>554
なるほどprivateもありですね。試してみます。
stringはstd::stringです。
556:デフォルトの名無しさん
08/07/30 03:49:12
OSが違ったら通らないではなくて、Solarisではたまたまエラーが
出なくてLinuxではしっかりチェックされて落ちるってオチだろうな。
多分ソースにバグがある。
557:デフォルトの名無しさん
08/07/30 03:58:01
>>556
その可能性大ですね。
Solarisはチェックが甘いからたまたま通ってただけな気がします。
時間あるから作り直そうかな。他にもありそうですし。
元々作った人が逃げて改修まかされて困ったもんです。
558:デフォルトの名無しさん
08/07/30 03:58:37
Solarisはdeleteした領域を触っても落ちないからね。