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

C ++は汎用プログラミング言語です。もともとCの拡張として設計され、構文は似ていますが、現在は完全に異なる言語になっています。このタグは、C ++コンパイラでコンパイルされる(される)コードに関する質問に使用します。特定の標準リビジョン[C ++ 11]、[C ++ 14]、[C ++ 17]または[C ++ 20]などに関連する質問には、バージョン固有のタグを使用します。

3
LPCWSTRは何の略で、どのように処理する必要がありますか?
まず第一に、それは正確には何ですか?ポインタだと思いますが(LPCは長いポインタ定数を意味します)、「W」はどういう意味ですか?文字列への特定のポインタですか、それとも特定の文字列へのポインタですか?たとえば、「TestWindow」という名前のウィンドウを閉じたいとします。 HWND g_hTest; LPCWSTR a; *a = ("TestWindow"); g_hTest = FindWindowEx(NULL, NULL, NULL, a); DestroyWindow(g_hTest); このコードは不正であり、const char [6]をCONSTWCHARに変換できないため、機能しません。まったくわかりません。これらすべてのLPCWSTR、LPCSTR、LPSTRを明確に理解したいと思います。私は何かを見つけようとしましたが、さらに混乱しました。msdnサイトFindWindowExで次のように宣言されています HWND FindWindowEx( HWND hwndParent, HWND hwndChildAfter, LPCTSTR lpszClass, LPCTSTR lpszWindow ); したがって、最後のパラメーターはLPCSTRであり、コンパイラーはLPCWSTRを要求します。助けてください。
91 c++  winapi  lpcstr 

5
すべての仮想関数を派生クラスに実装する必要がありますか?
これは簡単な質問のように思えるかもしれませんが、他のどこにも答えが見つかりません。 私が次のものを持っているとしましょう: class Abstract { public: virtual void foo() = 0; virtual void bar(); } class Derived : Abstract { public: virtual void foo(); } Derivedクラスがbar()関数を実装していなくても大丈夫ですか?すべての派生クラスがbar()関数を必要としない場合はどうなりますが、一部は必要です。抽象基本クラスのすべての仮想関数を派生クラスに実装する必要がありますか、それとも純粋仮想関数だけを実装する必要がありますか?ありがとう
91 c++  inheritance 

24
文字列から先頭と末尾のスペースを削除する
C ++で文字列オブジェクトからスペースを削除する方法。 たとえば、下の文字列オブジェクトから先頭と末尾のスペースを削除する方法。 //Original string: " This is a sample string " //Desired string: "This is a sample string" 文字列クラスは、私が知る限り、先頭と末尾のスペースを削除するメソッドを提供していません。 問題を追加するには、このフォーマットを拡張して、文字列の単語間の余分なスペースを処理する方法。例えば、 // Original string: " This is a sample string " // Desired string: "This is a sample string" ソリューションで説明されている文字列メソッドを使用すると、これらの操作を2つのステップで実行することが考えられます。 先頭と末尾のスペースを削除します。 使用find_last_of、find_first_not_of、find_last_not_ofとSUBSTR、find_first_of、繰り返し単語の境界でフォーマットしたい取得します。
91 c++  string 

2
この参照( '&this')をラムダでキャプチャできないのはなぜですか?
thisラムダでキャプチャする(オブジェクトプロパティを変更する)正しい方法は次のとおりです。 auto f = [this] () { /* ... */ }; しかし、私が見た次の特異性について興味があります。 class C { public: void foo() { // auto f = [] () { // this not captured auto f = [&] () { // why does this work? // auto f = [&this] () { // Expected …
91 c++  c++11  lambda 

1
##(ダブルハッシュ)はプリプロセッサディレクティブで何をしますか?
#define DEFINE_STAT(Stat) \ struct FThreadSafeStaticStat<FStat_##Stat> StatPtr_##Stat; 上記の行はUnreal4からの抜粋であり、Unrealフォーラムで質問できることはわかっていますが、これは一般的なC ++の質問であり、ここで質問する必要があると思います。 最初の行がマクロを定義していることは理解していますが、C ++のプリプロセッサのシェナニガンに精通していないため、そこで迷子になっています。ロジックによると、バックスラッシュは宣言が次の行に続くことを意味します。 FThreadSafeStaticStatはテンプレートに少し似ていますが、そこには#があり、C ++ではこれまでに見たことのない構文があります。 誰かがこれが何を意味するのか教えてもらえますか?Unreal 4にアクセスできない可能性があることは理解していますが、それは私が理解していない構文にすぎません。


4
静的メンバーへの未定義の参照
クロスコンパイラを使用しています。私のコードは: class WindowsTimer{ public: WindowsTimer(){ _frequency.QuadPart = 0ull; } private: static LARGE_INTEGER _frequency; }; 次のエラーが発生します。 `WindowsTimer :: _frequency 'への未定義の参照 私もそれをに変更しようとしました LARGE_INTEGER _frequency.QuadPart = 0ull; または static LARGE_INTEGER _frequency.QuadPart = 0ull; しかし、まだエラーが発生しています。 誰もが理由を知っていますか?

4
紛らわしいテンプレートエラー
私はしばらくclangで遊んでいましたが、テンプレートエラーから回復するためのヒントを提供するはずの「test / SemaTemplate /dependent-template-recover.cpp」(clangディストリビューション内)に出くわしました。 全体を簡単に最小限の例にまとめることができます。 template<typename T, typename U, int N> struct X { void f(T* t) { // expected-error{{use 'template' keyword to treat 'f0' as a dependent template name}} t->f0<U>(); } }; clangによって生成されたエラーメッセージ: tpl.cpp:6:13: error: use 'template' keyword to treat 'f0' as a dependent template name t->f0<U>(); ^ template …
91 c++  templates  llvm  clang 

8
「WindowsSDKバージョン8.1」というエラーを修正するにはどうすればよいですか?
最近VisualStudio 2015を更新しましたが、プロジェクトをビルドしようとすると常に失敗し、エラーが発生します 重大度コード説明プロジェクトファイル行の抑制状態エラーMSB8036WindowsSDKバージョン8.1が見つかりませんでした。必要なバージョンのWindowsSDKをインストールするか、プロジェクトのプロパティページでSDKのバージョンを変更するか、ソリューションを右クリックして[ソリューションのリターゲット]を選択します。プロジェクトD:\ Program Files(x86)\ Visual Studio 2017 \ Common7 \ IDE \ VC \ VCTargets \ Platforms \ Win32 \ PlatformToolsets \ v141 \ Toolset.targets 34 言われたとおりにソリューションをリターゲットしましたが、リターゲットが完了しても問題は解決しませんでした。そのため、Visual Studio 2017をインストールすることにしました。見よ、まったく同じことをしました。Windowsも使用しています。 7。 問題は何ですか?どうすれば修正できますか?

6
C ++関数テンプレートの部分的な特殊化?
以下のコードはクラスの部分的な特殊化であることを私は知っています: template <typename T1, typename T2> class MyClass { … }; // partial specialization: both template parameters have same type template <typename T> class MyClass<T,T> { … }; また、C ++では関数テンプレートの部分的な特殊化が許可されていないことも知っています(完全のみが許可されています)。しかし、私のコードは、関数テンプレートを1つ/同じ型の引数に部分的に特化したことを意味しますか?Microsoft Visual Studio 2010 Expressで動作するためです!いいえの場合、部分特殊化の概念について説明していただけますか? #include <iostream> using std::cin; using std::cout; using std::endl; template <typename T1, typename T2> inline T1 max …

8
PythonはC ++より高速で軽量ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 Pythonの利点はコードの可読性と開発速度であると常に思っていましたが、時間とメモリの使用量はC ++の場合ほどではありませんでした。 これらの統計は私を本当に強く打った。 PythonとC ++の時間とメモリ使用量について、あなたの経験から何がわかりますか?

10
ifステートメント-短絡評価と読みやすさ
場合によっては、ifステートメントがかなり複雑になったり長くなったりする可能性があるため、読みやすくするために、の前に複雑な呼び出しを抽出することをお勧めしifます。 例えばこれ: if (SomeComplicatedFunctionCall() || OtherComplicatedFunctionCall()) { // do stuff } これに bool b1 = SomeComplicatedFunctionCall(); bool b2 = OtherComplicatedFunctionCall(); if (b1 || b2) { //do stuff } (提供された例はないことを複数の引数などで他の呼び出しを想像し...、それだけで説明のために悪いです) しかし、この抽出により、短絡評価(SCE)が失われました。 毎回本当にSCEを失うのですか?コンパイラーが「最適化」してもSCEを提供できるシナリオはありますか? SCEを失うことなく2番目のスニペットの読みやすさを向上させる方法はありますか?




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