問題タブ [boost-extension]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - タイプ選択のマップを作成する方法を後押ししますか?
だから私は BOOST.EXTENTIONを使ってモジュールをロードします。各モジュールを説明する特別なファイルがあります。そのファイルから変数を読み取ります。
そのような例:
私にとっては次のようになります:
標準タイプと衣装タイプをマッピングするようなマップを作成するにはどうすればよいですか?
アップデート:
バリアントである可能性があります:
半減できますか?必要なすべての型が宣言されている限り、気にしないでしょうか?
c++ - 地図の受け取り方& 関数/クラスから?
map<string, factory<BaseClass, ConstructorType> >
そのような機能からどのように受け取るのですか?
ので、私は持っています
そして、私は次のようなものでその値を取得しようとします:
私は自分自身のために、boost.extension メソッドのいくつかを一般化/単純化しようとしています。
map<A, B>&
では、正しく受け取るには?
リンクを正しく初期化する方法、またはリンクではなく実際のオブジェクトを返す方法は? (申し訳ありません C++ ヌーブ)
c++ - 参照の作成とオブジェクトの作成の主な違いは何ですか?
少し前に、Boost.Extension の例で遊んでいました。彼らは使用した
しかし、プロジェクトを bjam から premake から Visual Studio プロジェクト 2008に移植し始めたとき、マップの作成に使用された方法を使用できないことがわかりました。その行で常にコンパイラ エラー C2512が発生しました (実際にはBoost.Extension type_map.hpp 内の 74 行目)。だから私は地図へのリンクを作成する方法を使用しました:
(彼らはいくつかのチュートリアルで使用しました)そしてそれはすべてコンパイルされました。私は C++ にまったく慣れていないため、おそらく多くのことを理解していません。
では、この場合と一般的に、リンクからの地図の作成と単純な地図の作成の違いは何ですか?
更新 - 完全なエラー メッセージ
エラー 1 エラー C2512: boost::extensions::basic_type_map::type_map_convertible::type_holder: 適切なデフォルト コンストラクターがありません c:\users\avesta\downloads\extension-svn-source\boost\extension\type_map.hpp 74 Mltiple-Inheritance
c++ - Boost.Extension-単純な継承サンプル-Linuxで動物が表示されないのはなぜですか?
そこで、Linux用のBoost.Extensionサンプルを移植しようとしています。
サンプルはここで説明されています。これが私のコードポートです(動物のクラス、動物のプロトタイプ、メインアプリ、一般的なすべてのポートのアイデアはここで説明され、現在のLinuxの進歩はここにあります(いくつかのサンプルは実際に必要に応じて機能します!))。このサンプルをLinuxでコンパイルすると、コンパイルすると、動物を含むライブラリが見つかりますが、次のように出力されます。
これはのみ発生しif(factories.empty())
ます。
拡張機能のサンプルをクロスプラットフォームベースに移植しようとしているので、Windowsで同じコードを試しましたが、魅力のように機能します。すべての動物と出力を検索します。
だから...なぜそれは同じコードでLinux上でそのように動作するのですか?なぜそれがWindowsでうまく機能するのですか?
アップデート:
それで、premakeでこのようなものを構築する方法:
- ここからsvnを取得します(このフォルダーのみが必要です)
- プラットフォームのプリメイクを取得するか、ソースからビルドして、svnからダウンロードしたフォルダーに配置します
- 公式のBoostをコンパイルしてインストールする必要があります(ディレクトリにあるReadMe.txtファイルをお読みください)。必要なものは次のとおりです。
- Boost C ++ライブラリ (バージョン1.4.16でテスト済み)
- Boost-Extension(最新のリビジョンを使用します。boost'boost / extension /
**
'の一部としてアドレス指定します。拡張機能をブーストするためにいくつかのチャンド(実際には1つのみ)を作成する必要がBoost.Extension.Tutorial/libs/boost/extension/
あったため、フォルダー内に提供し、svnをダウンロードしたときに取得しました。 、ヘッダーのみです) - Boost-Reflection(このチュートリアルのために使用し、最新のリビジョンを使用し、boost'boost /reflection /
**
'の一部としてアドレス指定します。*簡単にするために、 *に入れることをお勧めしBoost.Extension.Tutorial/libs/boost/reflection
ます)
- これで、公式のBoostがシステムにあり、ヘッダーのみのBoost-reflectionとBoost-extensionが
Boost.Extension.Tutorial/libs/boost
フォルダーにあり、premake4実行可能ファイルがBoost.Extension.Tutorial/
フォルダー内にある場合、Windowsを呼び出しBoost.Extension.Tutorial/ premake4-build-windows.bat
てVisualStudioのslnを取得したりBoost.Extension.Tutorial/ premake-build.sh
makefileを取得したりできます。 - 生成されたソリューション/メイクファイルは、生成されたプロジェクトフォルダー内にあります。
- 頑張ってください!=)
アップデート2:
WindowsとLinuxのプロジェクトファイルがsvnに含まれるようになったため、premakeを使用してプロジェクトを作成できます。Boost、svn、およびリフレクションヘッダーのみをlibに設定してください。
c++ - Boost-Extension-Reflection bjamを使用せずに公式サンプルをコンパイルする際のセグメンテーション違反エラーを修正するにはどうすればよいですか?
そこで、標準IDE用のBoost.Extensionサンプルを移植しようとしています。これは、BJAMからタムを解放し、プラットフォーム間で標準的な方法でそれらを操作できるようにするためです。
私が今問題を抱えているサンプルはここに記述されています。これが私のコードポートです(メインコードファイル、メインアプリケーション、一般的なすべてのポートのアイデアをここで説明し、現在のLinuxの進歩をここで説明します(ほとんどのサンプルは実際に必要に応じて機能します!))。このサンプルをLinuxでコンパイルすると、コンパイルされますが、ライブラリは見つかりますが、実行中に セグメンテーション違反エラーで失敗します。Windowsでコンパイルすると、同じことが起こります。
オリジナルのチュートリアルコードをできるだけ変更しないように最善を尽くしました。
では、コードの何が問題になっているのか、なぜ失敗したのか、そして重要なのはそれを修正する方法だけですか?
それで、premakeでこのようなものを構築する方法:
- ここからsvnを取得します(このフォルダーのみが必要です)
- プラットフォームのプリメイクを取得するか、ソースからビルドして、svnからダウンロードしたフォルダーに配置します
- 公式のBoostをコンパイルしてインストールする必要があります(ディレクトリにあるReadMe.txtファイルをお読みください)。必要なものは次のとおりです。
- Boost C ++ライブラリ (バージョン1.4.16でテスト済み)
- Boost-Extension(最新のリビジョンを使用します。boost'boost / extension /
**
'の一部としてアドレス指定します。拡張機能をブーストするためにいくつかのチャンド(実際には1つのみ)を作成する必要がBoost.Extension.Tutorial/libs/boost/extension/
あったため、フォルダー内に提供し、svnをダウンロードしたときに取得しました。 、ヘッダーのみです) - Boost-Reflection(このチュートリアルのために使用し、最新のリビジョンを使用し、boost'boost /reflection /
**
'の一部としてアドレス指定します。*簡単にするために、 *に入れることをお勧めしBoost.Extension.Tutorial/libs/boost/reflection
ます)
- これで、公式のBoostがシステムにあり、ヘッダーのみのBoost-reflectionとBoost-extensionが
Boost.Extension.Tutorial/libs/boost
フォルダーにあり、premake4実行可能ファイルがBoost.Extension.Tutorial/
フォルダー内にある場合、Windowsを呼び出しBoost.Extension.Tutorial/ premake4-build-windows.bat
てVisualStudioのslnを取得したりBoost.Extension.Tutorial/ premake-build.sh
makefileを取得したりできます。 - 生成されたソリューション/メイクファイルは、生成されたプロジェクトフォルダー内にあります。
- 頑張ってください!=)
アップデート:
WindowsとLinuxのプロジェクトファイルがsvnに含まれるようになったため、premakeを使用してプロジェクトを作成できます。Boost、svn、およびリフレクションヘッダーのみをlibに設定してください。
アップデート2:
一般的に私のコンピュータはWindowsとLinuxの両方で問題を示しています。Linuxの詳細( Mono2.10.2を含むopenSUSE11.3 VMWareイメージ)GCC(gcc -v
):
私のウィンドウは、Visual Studio Team System 2008TeamSuiteを搭載した標準のWindows7です。
私のブーストは、手動でコンパイルおよびインストールされたここからの1.46.1ダウンロードです。
c++ - Boost::extension で中かっこがどのように機能するか、そのようなマクロを自分で作成するにはどうすればよいですか?
BOOST_EXTENSION_TYPE_MAP_FUNCTION
Boost::Extensionマクロの使い方を見てみましょう。
たとえば、次のようにします。
BOOST_EXTENSION_TYPE_MAP_FUNCTION
マクロはextension.hppで定義されています。
このマクロが中かっこの内容をどのように理解するのか、たとえば、このマクロを「Hello extended macro」のようなものに拡張する方法を知りたいですか?
c++ - ランタイム プログラムを別のサーバーに複製する方法はありますか
サーバー上で小さなプログラムを実行しているとします。たとえば、乱数ジェネレーターとその結果を毎秒クライアントに送信します。サーバーの電源が切られようとしていることはわかっています。クライアントが気付かないように、プログラムを別のサーバーに複製する方法はありますか?
理想的には、小さなプログラムの動的オブジェクトを保存し、それを別のサーバーに送信し、動的リンクを使用して別のサーバーに再リンクしたいと考えています。それが可能であれば、問題はその小さなプログラムを保存/休止状態にする方法です。
別の明らかな解決策は、プロジェクトのすべての状態をシリアル化して別のサーバーに送信することですが、これには小さなプログラムの変更が必要になるため、望ましくありません。
どんなキーワードで検索すればいいのかもわかりません。
(可能であれば、システムコールを避けたいと思います。そうでない場合は問題ありません。)
更新 (1) デフォルトのプラットフォームは Linux ですが、組み込みシステムと nacl にも興味があります。