タグ付けされた質問 「c++」

静的に型付けされた自由形式のマルチパラダイムでコンパイルされた汎用プログラミング言語であるC ++に関する質問。

2
50歳の読み書きができないコンピュータをプログラミングに導入する方法[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 8年前休業。 先日、父が私に彼に期待したことのない質問をしました。 「どうすればC ++を習得できますか?」 私の父は今年56歳になり、コンピューターは彼にとって遠い概念です。彼は電話番号以外に電話の使い方をよく知らない(スピードダイヤルや連絡先はない)。彼は少しよくコンピューターを学び始めました-彼はインターネットを(Windowsで)開いて閲覧する方法を知っているところまで(そして彼は自分のオンラインで完全にいくつかの求人応募を完了しましたが、そのうち彼も役職を与えられました) )。しかし、それでも、これらは狭いウィンドウでの体験であり、実際にはあまり意味がありません。 彼はバックグラウンドを持っていないかもしれませんが、私の父は読む方法を知っています。そして、読書というのは、単なる能力ではなく、スキルとしての意味です。彼は大学教育(財政問題、家族など)をほとんどまたはまったく持っておらず、高校を卒業するのに十分幸運でしたが、それでも彼はマスター電気技師になることを学び、現在約30年間1歳です。彼はギターでも同じことをし、非常にプロフェッショナルなレベルで演奏することを学び、そのスキルで賞賛されました。高校では、彼は重量挙げの本を手に取りました。そして、当時、高校で唯一、国家基準で「アスリート」として認定された人物でした。 すべての場合において、彼は何かを読む必要がありました。彼に教える何か。彼はスポンジのように情報を吸収します。 私は父のモチベーションやこれを行う能力に疑いがないので、私の一般的な目標は単に次のとおりです。 私のお父さんをコンピューターの世界に連れて行って、彼をプログラミングの道に連れて行ってください。 私が彼に基本を理解させたら、彼の意欲と読解力が彼にこれを続けさせると強く信じています。 だから私はあなた方全員に尋ねています:これからすべてをどこから始めるべきですか?そしてそこに最高のリソースは何ですか?彼にWindowsの代わりにLinuxを起動させるべきですか?C ++は悪い考えですか? 覚えておいてください、彼は(IMO)最初にコンピューターを学び、それからプログラミングの最初の把握( "Hello world"体験)をする必要があります。 お金のために、そして優先的に、彼が読むことができる無料のオンラインリソースが欲しいのですが、印刷物またはオンラインで支払われたものでの良い提案はすべて歓迎します(後で調べ​​て購入する可能性があります)。 また、私は彼をC ++(Python、Javaなどなし)から始めるつもりです。私はそれを最もよく知っており、コードを使用して彼を助けることができるからです。(私は現在、他の言語では最小限の知識しか持っていません)。 編集:Pythonを使用するための多くの永続的な提案を受けています。私がC ++をやりたかった唯一の理由は、私がそれを知っていて、私の父が助けを必要とするときにそこにいることができるということです。私がプログラミングに初めて触れたのはJavaでした。私はJavaを学び、それで上手になりました。他の提案も歓迎しますが、あなたの提案を効果的に活用してください。 編集#2:私は私のアプローチ/思考/知識がここに欠けている可能性があることを理解しています。私は2年生レベルの学部CS専攻です。私の投稿に何も同意しない場合は、その理由を教えてください-アイデアや情報を教えてください。それが私が最初に尋ねている理由です。私の一般的な目標を特定の到達可能な目標に絞り込むこと。
10 c++ 

5
アサートまたはエラーとしての例外?
私はプロのCプログラマーであり、趣味のObj-Cプログラマー(OS X)です。最近、その非常に豊富な構文のために、C ++に拡張するように誘惑されました。 これまでのコーディングでは、例外をあまり扱っていません。Objective-Cにはそれらがありますが、Appleのポリシーは非常に厳格です。 重要プログラミングまたは予期しないランタイムエラー(範囲外のコレクションアクセス、不変オブジェクトの変更の試行、無効なメッセージの送信、ウィンドウサーバーへの接続の喪失など)の例外の使用を予約する必要があります。 C ++は例外をより頻繁に使用することを好むようです。たとえば、RAIIのウィキペディアの例では、ファイルを開くことができない場合に例外がスローされます。Objective-Cはreturn nil、outパラメータによってエラーが送信されます。特に、std :: ofstreamはどちらの方法でも設定できるようです。 ここで、プログラマーに対して、エラーコードの代わりに例外を使用することを宣言するか、例外をまったく使用しないことを宣言するいくつかの答えを見つけました。前者の方が一般的です。 C ++の客観的な研究をしている人は見つかりませんでした。ポインタはまれであるため、例外を回避することを選択した場合は、内部エラーフラグを使用する必要があります。それは扱いが面倒すぎますか、それとも例外よりもうまく機能しますか?両方のケースを比較するのが最良の答えです。 編集:完全に関連しているわけではありませんが、私はおそらく何nilが何であるかを明確にする必要があります。技術的にはと同じNULLですが、メッセージをに送信しても問題ありませんnil。だからあなたは次のようなことができます NSError *err = nil; id obj = [NSFileHandle fileHandleForReadingFromURL:myurl error:&err]; [obj retain]; 最初の呼び出しが返されたとしてもnil。また*obj、Obj-Cでは絶対にしないので、NULLポインターの逆参照のリスクはありません。
10 c++  exceptions 

3
オブザーバーパターン。何が変わったのか知っていますか?
古典的なObserverパターンインターフェイスを定義する2つの抽象クラスSubjectとObserverを作成しました。オブザーバーパターンを実装するためにそれらから派生しています。オブザーバーは次のようになります。 void MyClass::Update(Subject *subject) { if(subject == myService_) { DoSomething(); } else if(subject == myOtherService_) { DoSomethingElse(); } } これは問題なく、誰が何かを変更したかがわかります。ただし、何が変わったのかはわかりません。サブジェクトに最新のデータを照会するだけでよい場合もありますが、サブジェクトで何が変更されたかを正確に知る必要がある場合もあります。Javaでは、おそらく何が変更されたかの詳細を指定するために、notifyObservers()メソッドとnotifyObservers(Object arg)メソッドの両方があることに気づきました。 私の場合、サブジェクトでいくつかの異なるアクションの1つが発生したかどうかを知り、それが特定のアクションである場合は、そのアクションに関連する整数を知る必要があります。 だから私の質問は: (Javaのように)汎用的な引数を渡すC ++の方法は何ですか? オブザーバーは最高のパターンですか?多分ある種のイベントシステム? 更新 Observerパターンのテンプレート化について説明しているこの記事を見つけました:テンプレートを使用したSubject / Observerパターンの実装。これは、あなたが議論をテンプレート化できるかどうか疑問に思いました。 引数のテンプレート化に関するこのスタックオーバーフローの質問が見つかりました:テンプレートベースのサブジェクトオブザーバーパターン-static_castまたはdynamic_castを使用する必要があります。しかし、OPには誰も答えていない問題があるようです。 もう1つの方法は、Updateメソッドを変更して、次のようにEventArgオブジェクトを取得することです。 void MyClass::Update(Subject *subject, EventArg arg) { ... 次に、特定の引数データ用にEventArgのサブクラスを作成し、それをupdateメソッド内の特定のサブクラスにキャストし直したと思います。 アップデート2 また、非同期メッセージベースのc ++フレームワークの作成に関する記事も見つかりました。何が変わったかについての詳細を被験者に伝えることを論じるパート2 Boost.Signalsの使用を真剣に検討しています。自分のオブザーバーパターンを使用することは、それが単純な場合には理にかなっていますが、型と引数のテンプレート化は複雑になり始めています。そして、Boost.Signals2のスレッドセーフが必要になる場合があります。 アップデート3 オブザーバーパターンに関する興味深い記事もいくつか見つかりました。 ハーブサッターによるオブザーバーの一般化 C ++でのオブザーバーパターンの実装-パート1 Observerデザインパターンの実装の経験(パート2) …

5
Javaは、C ++のように、クラス定義と実装の分離を促進しますか?
私は宿題をしていて、GRASPの「保護されたバリエーション」に従って、どちらのアプローチがより良いかを評価する必要があります。Stack Overflowで、C ++でのヘッダーファイルとコードファイルの分離に関する質問を見つけました。 ただし、Javaがクラス定義とクラス実装の分離を促進する際にC ++に従わない理由を知りたいのですが。C ++メソッドに比べて、Javaメソッドには利点がありますか?

8
C ++の技術評価から何を期待できますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 6年前休業。 ジュニア開発者として、主にC ++を使用するジョブの技術テスト/評価を依頼されました。これは私の最初のテスト/評価であり、2時間です。 私のC ++は、PHPで最近プロジェクトを行っているので、少し錆びています。 これは英国の会社ですが、候補者の技術テストはどこでもほぼ同じだと思います。 これらのテストの1つで何を期待できますか?

5
C ++アプリケーションの監視
新しい集中監視ソリューション(Zenoss)を実装しています。サーバー、ネットワーキング、およびJavaプログラムの組み込みは、SNMPとJMXを使用すると簡単です。 ただし、問題は、大規模な異種(Solaris x86、RHEL Linux、Windows)環境でカスタムC ++アプリケーションを監視および管理するためのベストプラクティスは何ですか? 私が見る可能性は次のとおりです。 ネットSNMP メリット 各サーバーに単一の中央デーモン よく知られた規格 監視ソリューションへの簡単な統合 サーバーでNet SNMPデーモンをすでに実行しています 短所: 複雑な実装(MIB、Net SNMPライブラリ) C ++開発者向けに導入する新しいテクノロジー rsyslog メリット 各サーバーに単一の中央デーモン よく知られた規格 監視ソリューションへの不明な統合(テキストに基づいてアラートを実行できることはわかっていますが、メモリ使用量、キューの深さ、スレッド容量などのテレメトリの送信にはどの程度うまく機能しますか) 簡単な実装 短所: 考えられる統合の問題 C ++開発者向けのやや新しいテクノロジー 監視ベンダーを切り替えた場合に起こりうる移植の問題 おそらく、アドホック通信プロトコルを思い付く必要があります(またはRFC5424構造化データを使用しています。ZenossがカスタムZenpackコーディングなしでそれをサポートしているかどうかはわかりません) 組み込みJMX(JVMを組み込み、JNIを使​​用) メリット JavaとC ++の両方の一貫した管理インターフェース よく知られた規格 監視ソリューションへの簡単な統合 やや単純な実装(他の目的のために、今日すでにこれを行っています) 短所: 複雑さ(JNI、ネイティブC ++とJavaの間のサンクレイヤー、基本的に管理コードを2回記述する) 起こりうる安定性の問題 かなり多くのメモリを使用して、各プロセスにJVMが必要 JMXはC ++開発者向けの新しいテクノロジーです 各プロセスには独自のJMXポートがあります(各マシンで多くのプロセスを実行します) ローカルJMXデーモン、プロセスはそれに接続します メリット 各サーバーに単一の中央デーモン JavaとC ++の両方の一貫した管理インターフェース …
10 java  c++ 

2
メタプログラミング
私はC ++開発者として旅を始めたばかりで、最近、メタプログラミングと呼ばれるトピックを研究しています。これまでのところ、このトピックに関する多くの情報を調査してきましたが、質問はほとんどありません。 c ++でのReflectionの使用:可能ですか?私の理解によると、リフレクションはプログラムの状態を操作する能力を備えたメタプログラミング手法であり、その操作は内省したり、内省したりすることができます。 リフレクティブアーキテクチャとメタレベルアーキテクチャの違いは何ですか?メタプログラミングアーキテクチャはどのカテゴリに分類されますか? メタプログラミングには、メタレベルとベースレベルの2つのレベルがあります。私の理解では、調査中のオブジェクトプログラムまたはシステムはベースレベルであり、調査中のシステム上で動作するメタプログラムはメタレベルです。私は正しいですか? また、C ++でのテンプレートメタプログラミングの作業に関するガイドラインを提供してください。 このプログラミング手法を実践するために私が探すことができる実用的な例をいくつか教えていただけますか?
10 c++ 

5
プログラミングを学ぶときに自分自身を将来保証する[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 3年前休業。 必要に応じて、「将来を見据えた」方法でプログラミングする方法を学びたいです。Windowsが(今のところ)デスクトップOS市場を支配していますが、その言語、フレームワーク、APIなどを学ぶことには明らかに大きな価値があります。これは、新しいデバイスが登場したり、Windowsが足を踏み入れたり(Windows -Windows 8のプレビューはあまり魅力的に見えません...)。 GUI用のJavaなどの非常に移植性の高い言語と組み合わせて、バックエンドロジック/低レベルプログラミングなどのC / C ++に関する確かな知識があることは、ソフトウェア開発の良い基礎になると思いますか?それは、ほとんどのシステムで役立つでしょうか?-私はデスクトップPC、タブレット、電話を話している。
10 java  c++  c  portability 

2
単一責任とカスタムデータタイプ
過去数か月、私はここSEや他のサイトの人々に、私のコードに関して建設的な批判をしてくれるように頼みました。ほぼ毎回飛び出し続けていることが1つあります。それでも、その推奨事項には同意しません。:P私はそれについてここで議論したいと思います、そして多分物事は私にとってより明確になるでしょう。 それは単一責任原則(SRP)に関するものです。基本的に、私はデータクラスを持っています。これは、データFontを操作するための関数だけでなく、データをロードするための関数も保持しています。ロードファンクションはファクトリクラス内に配置する必要があると、2つは分離する必要があると言われています。これはSRPの誤解だと思います... 私のフォントクラスの一部 class Font { public: bool isLoaded() const; void loadFromFile(const std::string& file); void loadFromMemory(const void* buffer, std::size_t size); void free(); void some(); void another(); }; 提案されたデザイン class Font { public: void some(); void another(); }; class FontFactory { public: virtual std::unique_ptr<Font> createFromFile(...) = 0; virtual std::unique_ptr<Font> createFromMemory(...) = …

3
Objective-C ++は段階的に廃止されますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 AppleはObjective-C ++のサポートを段階的に廃止していますか?次の点に注意してください。 Objective-C言語マニュアル、対物-CおよびC ++の混合のセクションがあるように使用されます。そのセクションは現在欠落しています。 アップルの開発者向けウェブサイト上でのObjective-C ++の記事へのリンクが壊れているようだ、と今リダイレクトされ、例えば、この1私が上で見つけ、このstackoverflowの質問。 apple dev Webサイトでc ++を検索しても、現在の情報にはほとんど影響しません。 iOS開発にc ++を使用することについて心配する必要がありますか?
10 c++  objective-c  apple 

5
コードドキュメンテーション:公開か非公開か?
私は、記述されたコードが自明であり、本のように読まれるべきであるという考え方を持っている開発者の1人です。 ただし、他の人が使用するライブラリコードを開発するときは、できるだけ多くのドキュメントをヘッダーファイルに入れるようにしています。これは質問を持ち出します:非公開のドキュメント化方法は時間の価値さえありますか?彼らはそれらを直接使用することはありませんが、実際には使用できません。同時に(しぶしぶながら)未加工のコードを配布すると、これらの非パブリックメソッドが表示され、説明が必要になる場合があります。 皆さんが旅行中に見たり使用したりする基準や慣行を探しているだけです。

10
手書きのループよりもアルゴリズムを優先しますか?
次のうち、読みやすいものはどれですか。手書きのループ: for (std::vector<Foo>::const_iterator it = vec.begin(); it != vec.end(); ++it) { bar.process(*it); } またはアルゴリズムの呼び出し: #include <algorithm> #include <functional> std::for_each(vec.begin(), vec.end(), std::bind1st(std::mem_fun_ref(&Bar::process), bar)); std::for_eachこのような単純な例を考えると、本当に多くのコードがすでに必要であるため、本当に価値があるのでしょうか。 この問題についてどう思いますか?
10 c++  algorithms 


4
大きなテンプレートの実装を処理するC ++推奨の方法
通常、C ++クラスを宣言する場合は、宣言のみをヘッダーファイルに配置し、実装をソースファイルに配置することをお勧めします。ただし、このデザインモデルはテンプレートクラスでは機能しないようです。 オンラインで見ると、テンプレートクラスを管理する最良の方法について2つの意見があるようです。 1.宣言とヘッダーの実装全体。 これはかなり簡単ですが、私の意見では、テンプレートが大きくなるとコードファイルを保守および編集することが困難になります。 2.最後にインクルードするテンプレートインクルードファイル(.tpp)に実装を記述します。 これは私にはより良い解決策のようですが、広く適用されているようには見えません。このアプローチが劣っている理由はありますか? 多くの場合、コードのスタイルは個人の好みやレガシースタイルによって決定されます。私は新しいプロジェクト(古いCプロジェクトをC ++に移植)を開始しており、OO設計は比較的初心者なので、最初からベストプラクティスに従いたいと考えています。

3
関数のランタイムインポートを可能にするC ++プログラムの設計方法
本日は、特定のソフトウェアアーキテクチャを実現するためのC ++の機能についてお伺いします。 もちろん、私は検索を使用しましたが、直接リンクされた回答は見つかりませんでした。 基本的に、私の目標は、ユーザーが任意に構成された物理システム(運転中の自動車など)のモデリングとシミュレーションを行えるプログラムを構築することです。私は、物理モデル(クラス内の関数)のライブラリがあると想定しています。各関数は、基礎となる物理的記述に応じて、いくつかの入力を持ち、いくつかの出力を返す場合があります。たとえば、燃焼エンジンモデル、空力抵抗モデル、ホイールモデルなどです。 ここでのアイデアは、ユーザーが自分のニーズに応じて任意の機能を構成できるようにするフレームワークをユーザーに提供することです。つまり、物理的な動作をマップすることです。フレームワークは、さまざまな機能の出力と入力を接続する機能を提供する必要があります。したがって、フレームワークはコンテナークラスを提供します。これをCOMPONENTと呼び、1つまたは複数のモデルオブジェクト(FUNCTION)を保持できます。これらのコンテナーは、他のコンポーネント(複合パターンを参照)や、関数パラメーター間の接続(CONNECTOR)も保持できます。さらに、コンポーネントクラスは、数学ソルバーなどのいくつかの一般的な数値機能を提供します。 関数の構成は実行時に行う必要があります。最初の例では、ユーザーは、コンポジション構造を定義するXMLをインポートすることでコンポジションをセットアップできる必要があります。その後、GUIを追加することを考えることができます。 ここで理解を深めるために、非常に単純化した例を示します。 <COMPONENT name="Main"> <COMPONENT name="A"> <FUNCTION name="A1" path="lib/functionA1" /> </COMPONENT> <COMPONENT name="B"> <FUNCTION name="B1" path="lib/functionB1" /> <FUNCTION name="B2" path="lib/functionB2" /> </COMPONENT> <CONNECTIONS> <CONNECTOR source="A1" target="B1" /> <CONNECTOR source="B1" target="B2" /> </CONNECTIONS> </COMPONENT> 私の問題ははるかに一般的であるため、フレームワークの機能について詳しく説明する必要はありません。フレームワークのコード/プログラムがコンパイルされたとき、物理的な問題の説明とユーザー定義関数は不明です。ユーザーが(XMLまたは後でGUIを介して)関数を選択すると、フレームワークは関数情報を読み取る必要があります。つまり、ユーザーに関数を相互接続するオプションを提供するために、入力パラメーターと出力パラメーターの情報を取得する必要があります。 私はリフレクションの原理を知っており、C ++がこの機能を提供していないことを知っています。ただし、「実行時にオブジェクトを構築する」という概念は非常に頻繁に必要になると思います。目標を達成するには、C ++でソフトウェアアーキテクチャをどのように設定すればよいですか?C ++は正しい言語ですか?私は何を見落としていますか? 前もって感謝します! 乾杯、オリバー

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.