6年前GWもいよいよ終わりですが、C++もいよいよSTLに入るところなので。GW課題として汎用なスタックを作ることにしました。C++ではないと感じた(Cに逆戻り?)もう一つの主旨をいうとエラーにぶち当たりました。void*にNULLを返そうとすると異常終了してしまいます。6年前なんか、ナナメに突っ走ってますね。テンプレートでは多用性が低いと感じてこれの意味が不明です。説明をお願い出来ますか?もしかして1つのスタックに多用なデータを入れようとしたって事ですか?boost::anyを使うと幸せになれるかも知れません。それと、これをデバッグできないのは別の問題なのでデバッガで調べる技術を身につけられた方が良いでしょう。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。6年前スタック構造のメモリのようなものを作ろうとしました。結局のところVC++使いこなせず、サクラエディタ+MinGWコンパイラでやってます。デバッグツールは自分の両眼、トレースは脳内で行います。6年前MinGWならGDBを使ってください。デバッグツールは自分の両眼、トレースは脳内で行います。そのデバッグツールに問題があるから提案しているのです。【追記】そういえば、ポインタをスタックしているだけなので実際にはデータをスタックしているわけではないってのが最大の問題かもしれません。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。6年前ポインタをスタックしているのは単純にいちいちメモリ割り当てるのがめんどくさいからです。今は稼働率100%のデバッグツールを修正しながら、C++を学習していきます。NULLが入ってもwhile(!v)でループを抜け出せないのが原因』と言っています。ポインタをスタックしているのは単純にいちいちメモリ割り当てるのがめんどくさいからです。今は稼働率100%のデバッグツールを修正しながら、C++を学習していきます。NULLが入ってもwhile(!v)でループを抜け出せないのが原因』と言っています。デバッガを使わないのは無駄な努力だと私は思うわけです。同時にデバッグのいろんな方法を考えられないのは、プログラムを組めないのと同等以上の問題が有ると私は思うわけで「AdvancedWindows」の前にやることあるでしょう。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。*v=NULLにしてもループ抜け出せないのは少し驚きです。今はまだプログラムの規模小さいから人力デバッガでなんとかなりますし、脳トレと思えば案外やりがいあります。アプリ作りにステップアップすればいやでも使います。6年前まだエラーが残っているようです。空のエディタwhile(v)試したところ、普通に動きますが、上げたコードの最後にくっつけると実行されないようです。エラーが残っているようです。空のエディタwhile(v)試したところ、普通に動きますが、上げたコードの最後にくっつけると実行されないようです。冷たいと思われるでしょうが、デバッガも使わない&デバッグ技法も使わないで脳トレだと思うなら自分で頑張って頂くしかないと思います。学習程度と質問に最適だと思われる答えを提示したつもりですが、それを否定されるとなると私の出る幕ではないと感じました。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。6年前がんばってデバッグしました。headが初期化されていないのが原因でした。コンストラクター追加してエラーを防げました。×デバッガ使わない○まだ使う時期ではないと判断しただけですというかまだC++に手を出す時期でないのでは?C言語レベルでも、データとデータタイプでまとめるべきだという判断はできると思いますけど。その発想がないとオーバーロードのありがたみが分からないと思います。まいどスレタイと内容の乖離を感じます。6年前タイトルと内容のズレはしかたないです。(たとえば小説とか)Cを一通り学んだのでC++に入りました。C++の学習は前も一度書いたが独習C++からさらに何冊も使ってスキルアップを狙います。開発ツールの使い方とか、今の段階では後回ししても問題ないと思います。オーバーロードとか継承とか便利だと思えば使えばいいじゃないですか?じゃあ使えばいいじゃないですか。オーバーロードとか継承とか自体はむかしもいまも変わってませんよ。使っているうちにC++言語が変わるわけではありませんよ。意識して使い方を変えたり新しいことを覚えたりしないといつまでたっても便利にはなりません。データタイプとスタックの状態は無関係。自分のコードをC基準にして、うまく組み替えた感じがします。適当に作って上げた自分のコードと違ってきれいなコードですね。自分のスキルはあくまで読んだ本の数量に比例するので、まだまだヒヨコです。6年前なかなかいい質問ですね。A(B)はサポートしないとして。=演算子のオーバーロードです。別にコピーコンストラクターでもいいですが、どうも引っかかるんでね。コピーコンストラクターが呼びだされる場合と呼び出されない場合。data)+size);よりはシンプルでわかりやすいし、対策もとりやすいと思います。A(B)はサポートしないとして。6年前usaoさんがなぜ頭に血が上がっているのかは置いといて『指摘』ありがとうございます。×デバッガ使わない○まだ使う時期ではないと判断しただけですデバッガを使う時期ではない,などという時期はありませんよ。あったとしても,その判断をするためにはデバッガを使える能力が必要です。デバッガが使えない環境のためにデバッガを使わずにデバッグする手法というのはありますが,デバッガがあるのに使わないのは無駄もいいところです。ブレイクポイントとウォッチ,ステップ実行程度ならば,大抵のデバッガに機能として付いてきます。デバッガを使ったデバッグの基本は,この3つを使って想定と違う動きをする場所を見つけだすことです。3のみオペコードCCが定義されています。通常のINT命令はオペコードCDとBYTEオペランド1つをとります。デバッガを(故意に)使わないデバッガを使う技術があり,使う利点と欠点を比較した上で「使わない」という判断を下したデバッガが(環境的に)使えないデバッガが対象の環境には提供されていない,実動作環境等でデバッガをインストールできない,インストールする権限を持っていない等,対象の環境が原因で利用できないデバッガが(能力がないために)使えないデバッガは存在するが,それを使うための勉強をしていないために使えない。上2つなら,デバッガを使っていない理由を時期にはしないでしょう。タイトルと内容のズレはしかたないです。(たとえば小説とか)何が言いたいのでしょうか。タイトルは内容の要約であるべき,ということに対してズレは仕方がない,というのは,要約する技術を持っていません,と言っているように見えます。プログラム云々ではなく,質問の仕方を学ぶべきなのではないでしょうか。このスレッドの一番最初の投稿でも,「何を質問したいのか」がはっきりと書かれておらず,softya(ソフト屋)さんがわざわざ「ここが質問ではないか」という点を探して回答されています。この掲示板では,質問用のテンプレートまで用意してくれているのですから,それにのっとって質問してみてはどうでしょうか。例示されているのが小説であるのも意味がわかりません。例示するのに不適切です。A(B)はサポートしないとして。サポートしないならば明示的にサポートしないことを示すべきです。実装は提供しないなどとすることで,コピーコンストラクタを利用する場合にエラーとなります。辛口コメントでフルボッコされました。要点をまとめて答えましょう。最初に上げた主旨はこうです:1汎用なコードを書こうとして汎用性のラインはどこか?2(元)原因不明なエラーに遭遇しました。そのあとは受けたコメントに対して適切と思う返事をしていくので”主旨から離れるのはしかたないことです”3.あくまで「自作」演習課題なので、ほとんど深く考えずに作ったし使用者も自分だけなのでなにをサポートするかしないかを明示させる必要はないと判断しただけです今度からタイトルはあらかじめ『主旨:1...2...』としたほうがいいみたいですね。6年前アドバイスありがとうございます。初期化によるエラーはおそらくもうおきないでしょう。C++はすでに本棚においてあるが、STLを少し使いこなせるようになったら読もうと思っています。>最初に上げた主旨はこうです:1汎用なコードを書こうとして汎用性のラインはどこか?2(元)原因不明なエラーに遭遇しました。最初の質問に戻りまして。屍さんが求める汎用とはどういうものですか?僕からの質問で屍さんはC言語は完璧でしょうか?C++の理解度は何%くらいだと自分で思っていますか?汎用性を求めるのはC,C++の理解度を100%もとい150%くらい理解している必要があると思います。当たり前ですがプログラミングだけでなくメモリの動きも理解していないといけません。デバッガの使い方を理解してからコーディングに移ったほうが絶対にいいですよ。相手が知ってる前提で特定の答えを期待して質問すると、それはそのまま自分に跳ね返ってきます。質問者でも回答者でも同じように。「これは問題あるでしょう?」という指摘は、相手にそれを解決する能力がなければ期待する回答を得られません。解決する能力があればそもそもその指摘をすることにならないですから、その指摘自体が無意味です。指摘をするなら「こうしておかないとこういうときに問題になる」という形式を取らなければいけないということになります。オーバーロードとか継承とか便利だと思えば使えばいいじゃないですか?じゃあ使えばいいじゃないですか。ここで「じゃあなんで使わないのですか?」と書くと炎上に向かうわけです。最初はこれまでのスレから考えて、プラットフォームフリーとか読み易いという意味で汎用と言っているのかなと思いました。質問のコードを見たらvoid*のことかと思いましたけど。聞き返したりはしません。Cで書いたことよりもchar配列で内部表現を記録していることのほうが重要なんですけどね。6年前とりあえず、質問に答えます。・自分の求める汎用性について:”メモリ”です。自分は遠回りでOSに向かって進めているつもりです。アプリとか組みなれてからインサイドを読むという流れからもわかると思います。最終的にはメモリの動きも理解してないと自作OSにはたどり着けないから、余裕が目に見えるようになってからアセンブラに入ると思います。・C/C++の熟練度について:完璧をすなわち「どんなコードも読めるし、書ける」とするならばまだまだヒヨコです。C++は文法20%,STL80%と思っているのでC++の理解度は今のところ約20%ですね。C++に入る理由について:[第3版の内容紹介から引用します]リソース管理、テンプレートを使ったプログラミングに関する章を追加し、例外の存在、デザインパターンの適用、TR1という新しい項目に関する解説も加えました。すべてを初めから組み立てなおし、実際に半分以上が新しい内容になっています。>最初に上げた主旨はこうです:1汎用なコードを書こうとして汎用性のラインはどこか?2(元)原因不明なエラーに遭遇しました。小説も作者の感情次第で流れがとんでもない方向に向かうところが案外似てると思いましたから。6年前>小説も作者の感情次第で流れがとんでもない方向に向かうところが案外似てると思いましたから書いている途中で方向性を変える作家で成功している人がいるのでしょうか。流れを整理すると以下な感じでしょうか質問の趣旨とは無関係にやってもらわなければならない事はいくつかあります。回答しにくいこれらはルールで決められているので守られていなければ当然注意されるものです。仕方ない事ないよね~。ルールだから守ってもらわないとね。拙いのは仕方ないけどね。そこは努力してもらわないとね。↓ん~途中から趣旨が離れていく事に関しては誰も何も言ってないのね~意図が分からないね。→「小説も作者の感情次第で流れがとんでもない方向に向かうところが案外似てると思いましたから。↓そんな小説聞いた事ないねぇ。彼の周りにはよくあるのだろうか。→返事がない、ただの屍のようだ回答者は質問または返答に意味の解らない事があれば説明を求めます。無視するわけにいかないですからね。それが真摯な対応と言うものです。彼の返答を見る限りではその質問に答える事で趣旨と離れていっているともとれるので上の流れを見れば誰が何処でどのように趣旨から外しているのかがよく分かるかと思います。屍さんは汎用ポインタを使ってデータ型を特定しないことを汎用性と言っているのではないでしょうか。メモリを汎用に扱いたいとはっきり書いていますし、わたしは質問で汎用ポインタを使っているのを見てそう思いました。屍さんは『汎用性』という言葉自体を理解していないものと思われます。それを考慮すれば、スレタイは不十分ではありますが主旨を表していると言えます。あいかわらず質問の体を成していない感想のようなスレタイと文章ですが、それと小説に例えたことは関係ありません。行動原理は関係あると思いますが。屍さんに肩入れするつもりはないですが、趣旨を曲げるような質問あるいは回答をしたのは屍さんではないと思います。その場しのぎであろう回答に、執拗に追求を繰り返し、答えに窮するのを嘲るのは、荒らし行為と言えるのではないでしょうか。自分はここを「学び場」だと解釈しています。回答に対していい加減な返答をして、それに対して言及されたら"実は真意はこうだったんですよ。分からなかったのですか?"的な対応をして「今回は乗り切ったぜー」と思わせていてはいつまでたっても直りません。確実に言える事は彼が今後どういう道に進もうといずれ同じ理由で上司に怒られます。出来る事なら深刻な問題を引きこ起こす前に学んでほしいと考えています。「言い訳するな」とか「どうして言い訳するんだ」と追求することで問題の行動が無くなるのでしょうか。わたしは自分にとっての「学び場」と考えます。屍さんのようなひともいるということを知ることも学びのひとつだと考えます。他人を矯正する場ではないと思いますしそのような権利が自分にあるとも思えません。『めんどくさい』この一言がMRさんへの答えです。MRさんがなにを言いたいのかMRさんの文面を見てなにも感じてないとでも思っていますか?ええ、他”人”をきつい言葉で批判するのは性に合わないといったのは覚えています。”MRさん”を整理してみましょう。ただの例え、にも関らず意味を持たせようと何度も追求してきた。小説に成功例を知らない、さらに揚げ足を取ろうと追求する。流れを整理すると(以下略)その4:MRさんはここは”勉強場”といいながら勉強に関する質問を一つもしてない少なくとも自分は最初から長いコードはタグで囲っていた、インデント揃ってないなんて一度たりともいわれたことがない。スレは質問者と回答者の両方で成り立っている。要するにみんな”作者”というのを主張していた。その場しのぎで答えたのはたった一回だけ、MRさんへの答えがそうだ。そもそも自分がどういう人か、なにを目指して失敗しようが成功しようがMRさんにとってそんなに大事なのかね?フォーラムルールに違反すると思われる内容があったので修正させて頂きました。さんも他の方も自重したください。さんの書いた内容は差別的なものです。フォーラムルールを今一度ご覧ください。http://dixq.net/board/board.htmlなぉ、これ以上個人同士での質問に関係のない過剰な言葉でのやり取りが続くようなら、このトピックを書き込み不能にさせて頂きます。6年前では最後に分かってもらえることを期待して一度だけ「言い訳するな」とか「どうして言い訳するんだ」と追求はしてませんよね。言えばタイトルと内容がずれていると指摘したのも私ではありませんし、小説と関係するとも言ってませんよね。発言には責任が伴います。社会に出れば新人だから、アルバイトだからなどという言い訳は通用しません。屍さん自身が「小説だ」と言ったのだからそれを説明する機会を与えただけです。間違えたのなら「間違えた」。その場しのぎで言ったのなら「売り言葉に買い言葉的に言ってしまいました」と言えば済む話です。話をずらしたのが誰であるという事も言ってませんよね。どこに間違いがあったのかを知ってもらうための材料を用意しただけです。それをどう解釈するかは屍さん自身です。ISLeさんが「屍さんが趣旨を曲げたと言いたい様だけど...」と読みとったのならそれがあなたの答えです。>わたしは自分にとっての「学び場」と考えます。いうのはISLeさん自身の話ですよね。それに関しては私は関知しません。私は屍さんに今のうちに知ってもらって大きな失敗をする前に直してほしくてやっています。ISLeさんは部下なり何なりが取引先との応対で適当な返事をしたために先方が「どれはどういう意味ですか?説明してください」と明らかに怒って電話してきた時に放っておく事で改善したのですか?私は数件そのような事態に遭遇していますがそれで解決した例を知りません。それに私はプログラムを学ぶ者は全て後輩だと思っています。実際ここで質問している人達が私と仕事をする確率も決して低くないと思っています。私にとっては他人ではありません。いう対応が適切なのか、という事に関しては未だに答えが出ていないのは事実です。ISLeさんは優しさからフォローに回ったのだと思いますが確実な解決方法だというのならば真剣に聞いてみたいのも本音ですね。>屍さんどこにもあなたがインデントを守ってない、コードタグで括ってないとは書いてませんよね。いう返答をするとこちらも「どこにそんな事書いたの?」と返さなくてはなりません。回答者は回答するのに時間を割いています。調べ、時には検証してそんなアドバイスに対し「やりたくない」というだけで上から目線で捌くなど回答者に対する侮辱ですよ。ミスはだった一度で致命的です。「めんどくさいなーコイツ」で済んでいるうちに学んでもらえる事を願っています。私のよく見る能力が伴わないのにプライドだけが高いやつにはならないでください。6年前どうして相手と同じ土俵で勝負したがるのですかね。相手を見下しているのならあなた(※)も同レベルだということになります。※同様の行為をするすべての人に対してであり特定の誰かを差しません。本人は気付いていないかもしれないですが傍から見ればくだらないガキのケンカです。6年前トピック主は解決となってますから、無暗に上がらないようにしてみたらどうですかね。書き込み禁止とかにできるなら、したほうがよろしいかと。こちらからはルール違反以外は強制したくないって思っています。今度ケンカ口調が飛び出したり同じ様な内容で繰り返す様なら、禁止とさせて頂こうかと思いますがよろしいでしょうか。sage機能はないです。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。「言い訳するな」とか「どうして言い訳するんだ」と追求はしてませんよね。言えばタイトルと内容がずれていると指摘したのも私ではありませんし、小説と関係するとも言ってませんよね。これは関係ないのに口出ししたと認める発言ですかね。屍さんの言い訳とそっくりですね。発言には責任が伴います。社会に出れば新人だから、アルバイトだからなどという言い訳は通用しません。屍さん自身が「小説だ」と言ったのだからそれを説明する機会を与えただけです。間違えたのなら「間違えた」。その場しのぎで言ったのなら「売り言葉に買い言葉的に言ってしまいました」と言えば済む話です。具体的な作家や作品を挙げろと迫ることにはどんな意味があるのでしょう。M.Rさん自身が答えを用意して質問しているのでなければそれはただの脅迫であり、掲示板にとっては荒らし行為です。>わたしは自分にとっての「学び場」と考えます。いうのはISLeさん自身の話ですよね。それに関しては私は関知しません。私は屍さんに今のうちに知ってもらって大きな失敗をする前に直してほしくてやっています。M.Rさんがどう思おうと勝手ですが、そういうことはわたしと関係しないところでやってください。他人を関知しないのはかまいませんが他人の存在を無視していいわけはないでしょう。自由を履き違えてますね。屍さん以外のこのスレを見る掲示板利用者を軽視してますよね。ISLeさんは部下なり何なりが取引先との応対で適当な返事をしたために先方が「どれはどういう意味ですか?説明してください」と明らかに怒って電話してきた時に放っておく事で改善したのですか?私は数件そのような事態に遭遇していますがそれで解決した例を知りません。わたしが上司ならわたしが責任を持って解決します。部下には「どうしてそんなことをした」と詰問せず「どうしたらそうならないか」を考えさせて報告書を書かせます。取引先ではないですが、リーダープログラマの立場でアルバイトを使うことが何度もありましたがその手の問題はそもそも発生しないかあるいは発生してもほぼ改善しました。詰問すると萎縮して報告・連絡・相談そのものをしなくなってしまうので最後に大きなツケがやってきます。少なくともわたしが関わったプロジェクトでアルバイトを契約時間外まで働かせたりデスマーチになったりしたことはありません。それに私はプログラムを学ぶ者は全て後輩だと思っています。実際ここで質問している人達が私と仕事をする確率も決して低くないと思っています。私にとっては他人ではありません。わたしは後輩であろうと下に見たりはしません。後輩だろうがアルバイトだろうが丁寧語で話しますし仕事をやってもらうときはお願いしています。上から目線はM.Rさんも同じですよね。いう対応が適切なのか、という事に関しては未だに答えが出ていないのは事実です。ISLeさんは優しさからフォローに回ったのだと思いますが確実な解決方法だというのならば真剣に聞いてみたいのも本音ですね。M.Rさんの投稿でスレが荒れたのもミスと言えるのではないでしょうか。回答の用意がない脅迫目的の質問は個人間でやってください。当人以外には迷惑でしかありません。6年前#見落としてました。なんか勘違いされているようですがわたしは誰の味方でもありません。あとからスレを見たひとに何か得るものがあれば良いですが、当人以外(というか当人にすら)何も得るものがないことでスレが無駄に伸びていくのが許せないだけです。個人的には主旨がズレてもかまわないと思っています。屍さんに対してはとうに言葉が通じるとは思っていません。言葉が通じない以上、調子に乗って限度を超えれば実力を行使します。そのときはもちろん掲示板利用者に迷惑を掛けないよう配慮します。投稿者は書いた内容に対して責任があります。いうことで以後は実力行使に移りますので、このスレへの投稿はこれが最後になると思います。今繰り広げられている話題と全然関係ないですが,(私は「C++以前にまずはCの基礎を云々...」とか言いましたけど,それは置いといて)質問者様の(質問時の)状況としては,Cを終えてC++に進んだ→勉強がてらということで,「C++の勉強のための課題」という側面があったのではないかと思いますが,完全にCな(C++でない)別のコードが示された時点で「解決」ということでよかったのかなぁ?とか...ご本人の勉強に役立っているのならばよいのですが.本来の話ですね。ご本人はC++の有用性とか必要性を感じていないと理解しました。私としては疑問ですがご本人に問題が無いのなら、それはそれで正解なのだと思います。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。最後と書いておきながらすみません。主旨に関する話ですので。完全にCな(C++でない)別のコードが示された時点で「解決」ということでよかったのかなぁ?とか...ご本人の勉強に役立っているのならばよいのですが.あのコードはわたしが書いた「C++に手を出す時期でない」という指摘を補強するために書きました。屍さんの反応を見るに指摘は正しかったと勝手に解釈しました。C言語でもオブジェクト指向っぽいことはできると示したいという意図がありました。汎用ポインタ(void*)を使うことが主旨であることを確認する意味もありました。して乖離をズレと解釈したのかは分かりませんし、小説の例えに関しては意味不明です。食い付いたところで何の得にもならないのは明らかでしたのでスルーしました。屍さんがどうなるとかはわたしの関知しないところです。6年前C/C++もそうだが、言語なんて所詮道具に過ぎないと思います。最初の主旨の一つである汎用について、Cのコードでも十分な指摘になったと感じます。それをどうやってオブジェクト指向に沿っていて、なおかつ無駄のないC++コードにするかは、C++を勉強していくにどのみち克服しなければならない課題で、自力で解く必要があると感じました。(それにしても、ずいぶんと荒れたコメントがあふれていますね。自分がカッとなって引き金を引いたのが悪いでしょう。)(実力行使かぁ、ちょっと気になりますね。ミクプラは自由にリンクできます。