const-cast

    0

    2答えて

    私はconst_castを<>とそれが引き起こす混乱についてインターネットとStackOverflowのを探索し、私は、しかし、私はまだ疑問を持っている、便利なものを見つけました。このコードを考慮 は、 #include <iostream> using namespace std; int main(void) { const int a = 1; int *p =

    2

    1答えて

    : #include <set> struct X { int a, b; friend bool operator<(X const& lhs, X const& rhs) { return lhs.a < rhs.a; } }; int main() { std::set<X> xs; // some insertion.

    2

    2答えて

    すでに実装されているメソッドの非constバージョンの作成にconst_castを使用できますか?私はこれらの行に沿って何かを見たと思うが(実際の作業をするためのconstメソッドの推薦を得て)、どうやって動作するのかは分からない。 Value& const search(key) const { // find value with key return value; }

    10

    4答えて

    constの正確さを維持しながら、const_castを以下のように取り除く良い方法はありますか? const_castを指定しないと、以下のコードはコンパイルされません。 set::findは、セットのキータイプへのconst参照を取得します。したがって、渡されたポインタ値を変更しないことが保証されます。しかし、ポインタが指しているものを変更しないことについては何も保証していません。 class

    0

    1答えて

    私は、アンマネージドコードでWCF呼び出しに対する応答を書いています。問題は、私がWS_STRINGに変換して返信したい整数があることです。 std::towstringは、wstringにのみ変換され、WS_STRINGに変換されません。私はどうすればそれを実現できますか? 同様の質問をした古いスレッドがありましたが、それは答えられていないようでした。 int i = 100; respons

    1

    0答えて

    iは、整数定数にポインタを使用する場合、変数の間の暗黙的な変換の種類がある場合、例えば を知りたいINTまたはのconst int型それは、私がをintに通常のポインタを使用している場合、それはのconstのアドレスが int型保存することはできません しかし、それを格納するために受け入れる理由です?おかげで事前に int i=4; const int ii=4; //pointer to

    2

    1答えて

    メンバ関数fを持つクラスAがあるとします。 fは、Aの何も変更せずに単純に値を計算します。しかし、実装では、それは一時的Aを変更しない: class A { int f() const { tiny_change(b); // since copying "b" is expensive int result = compute(b); t

    2

    1答えて

    私は次のC++コードを持っています。 Linuxマシンでg ++ 4.9.2でコンパイルできます。それから私はそれを実行すると、10を出力します。新しいオブジェクトが作成され、デフォルトコンストラクタのconst_castを使って作成されたポインタに割り当てられているようです。メモリリークはありません(valgrindを使用してチェックしました)。これは何らかの未定義の行動ですか、それとも合法です

    0

    2答えて

    私はWindowsでVisual Studioを使用してC++でバリデーションテンプレートをサポートする単純なロギングクラスを作成しました。私は可能な入力の共通の組み合わせに対応するためにいくつかの特殊化された汎用のLog関数テンプレートを作成しました。 #pragma once #include <Windows.h> #include <locale> #include <codecv

    2

    1答えて

    としてのconst左辺値参照を渡す: template<typename... Ts> void foo(std::tuple<Ts...>&& t) { processFoo(std::forward<std::tuple<Ts...>>(t)); } と左辺値参照を受け入れる別の関数: template<typename T> void bar(const T& t);