C++

C++_メソッドの呼び出し方メモ

「C++_コンストラクタに引数を渡して初期化」内の「===Memo===」へ追記的な立ち位置。 // A auto ch = new CHoge(); ch->xxx(); delete ch; // B CHoge ch; ch.xxx(); クラスは「 . 」でそのクラスのメソッドを呼び出せる。( B )A の auto 、この型はポイン…

C++_配列を std::vector に変換

値を std::vector にコピーする。 int intAry[5] = { 1, 2, 3, 4, 5 }; std::vector<int> intVec(std::begin(intAry), std::end(intAry)); std::vector<型> 変数名 ( 型* first, 型* last); と記述すると、first から last が指す先までのデータで初期化できる。 </int>…

高階関数とは 01

関数オブジェクト ( 関数のように振る舞うことのできるオブジェクト ) を習得しようと思ったが一先ずこっち調べた。 [ たかしな ] と打った方がすぐに変換できる。 「引数または戻り値を、関数とする」関数のこと。通常は int 型や string型など の型だが、…

C++_静的メンバ 03

静的メンバ関数について。 静的メンバ変数は実体がなくとも存在している ( インスタンス生成しなくとも存在 ) 。静的メンバ変数はプログラムの初めに初期化されているので、コンストラクタが呼ばれていなくても参照することに問題はない。 ex ) 実体なしで s…

C++_静的メンバ 02

参照先 URL で静的変数と静的メンバ変数が出てくるが、静的変数は関数内の static 変数で、静的メンバ変数はクラス内の変数。 要点 静的メンバ変数は静的変数なので、初期値は 0。初期値を設定したい場合は定義部分に。( main.cpp の int Hoge::m_num = 10; …

C++_静的メンバ 01 - b ( extern なしでエラー )

a 記事にてグローバル変数のコードを写経して実行してもエラーで躓いたのでその軌跡。 参照先のコードをそのまま下記のように記述したが、リンクエラー LNK1169 と LNK2005 が発生。 LNK1169:1 つ以上の複数回定義されているシンボルが見つかりました。この…

C++_静的メンバ 01 - a

C# の静的メンバと同じだが、C++ の書き方を知らないと理解できない。static クラスと普通のクラスとの区別つかなくなってきた。 ・静的メンバ変数は、さらに実体を別に宣言する必要がある。・静的メンバ変数は、どれだけインスタンスを作っても共有される。…

C++_ new を使うとき・使わないとき

参考サイトを読み進めていくのに必要な知識メモ。 クラスからオブジェクトを生成するとき new を使わないとスタック領域に実体が確保される。スコープから抜けると自動的に解放される。 new を使うとヒープ領域に実体が確保。new による戻り値は、実体を指し…

C++_ヘッダーファイル と ソースファイル

単語・指定子 前方宣言:定義を与えていないプログラム要素を表すシンボルの事前宣言のこと。変数、関数、型などに対するシンボルが含まれる。 リンケージ:ファイルを越えて利用できるか否か。 外部リンケージ:ソースファイルを超えて同じ実体を共有。ファ…

C++_メイン関数とは

プログラムがメモリにロードされてブートストラップ処理後、最初に起動される関数。 戻り値は、「int 型」「引数なし」「2 つの引数」が定義可能。 int main() { /* ... */ } int main(int argc, char* argv[ ]) { /* ... */ } main 関数の return 文を省略…

C++_int 型を wchar_t 型に変換

_itow より安全な _itow_s を使用する。 errno_t _itow_s( int value, wchar_t *buffer, size_t size, int radix ); // C++ only errno_t _itow_s( int value, wchar_t (&buffer)[size], int radix ); 引数 value:変換される数値。buffer:変換の結果を格納…

C++_wchar_t 型の連結

前の記事はリテラルで、これは変数結合。wcscat でなく、セキュリティの高い wcscat_s を使う。 errno_t wcscat_s( wchar_t *strDestination, //(dest) size_t numberOfElements, //(destmax) const wchar_t *strSource //(src) ); // C++ only errno_t wcsc…

C++_ワイド文字リテラルの連結

リテラル:ソースの中に直接べた書きした文字や数字のこと。 プリフィックス ( 接頭辞 ) を持たない通常の文字列リテラルと、プリフィックスを持つ文字列リテラルは連結することができ、プリフィックスがある方に合わせられる。 // s1とs2、どちらもwchar_t …

C++_ワイド文字 wchar_t

C でも使う。 ワイド文字とは、1 文字表現するのに 2 バイト用いる文字のこと。型は wchar_t 。ユニコード。WCHAR も同じ意味。 wchar_t は、環境でサポートされているすべてのロケール ( 国・地域設定の ) の中で、最も大きい文字を表現できる大きさを持つ…

C++_std::vector の初期化

初期化方法を意識していなかった。std::vector hh (5) の記述で初期化方法知った。※ 宣言のみだと要素数 0 なので push_back などで追加。 要素数を指定した宣言 動的配列はサイズを増減させることが出来るが、データ領域の確保・破棄とデータのコピー処理を…

論理演算の使い道メモ

左シフトやら右シフトすれば bit 変換 ( 記事最後のヤツ ) できるのか疑問だったので調べた。コピペ。 ビット数が違うデータ同士の計算 10 bit と 12 bit で出力された同値の数を int 型変数 16 bit に入れると、以下のようになる。|| は論理和ではなくただ…

C++_ C4819:ファイルは現在のコードページ(932)で表示できない文字を含んでいます

「C4819:ファイルは現在のコードページ(932)で表示できない文字を含んでいます。ファイルをUnicode形式で保存してください」とエラー。 エラーが出たファイルの文字コードは utf-8 ( 65001 ) 。932 は shift_jis 。utf-8 でも BOM がないと C4819 エラーが発…

アラインメント ( 追記 )

境界をまたぐ、アクセス回数など意味分からないので。 アラインメントは CPU のハードウェアに起因する問題であり、データのメモリアドレスに関する制約。C/C++ ( そしてアセンブラ ) でそれが問題となる理由は、データのメモリアドレスがプログラマに操作で…

C++_構造体のパディング と アラインメント

パディング:詰め物。水増し。 多くのコンパイラは、データを 2 バイト単位で揃えようとする。 これは多くの CPU が「奇数番地から始まるデータより、偶数番地から始まるデータの方が効率的に扱える」ようになっているため。 そのため char 型配列の要素が奇…

C++ C++/CLI の配列の書き方

分からなくなる。 C++ int p[ 10 ]; int p[ ] = { 1, 2, 3 }; // 初期化 or int* p = new int[ foo ]; // 要素数を変数とする場合。int foo = 5; C++/CLI // unmanaged int* p = new int[10]; int p[ ] = { 1, 2, 3 }; // 初期化 // managed array< int >^ p…

Visual Studio_LNK2001 外部シンボル "xxxxx" は未解決です

問題ファイルは hogehoge.obj 。 関数が宣言されているのに、定義されていない場合に出る。 詳しく 関数のプロトタイプだけしかなくとも ( 定義されていなくとも ) 、ソースはコンパイルできるので、 hogehoge.obj が生成される。 リンカは、オブジェクトフ…

Visual Studio_このプロジェクトではユーザーの入力が必要です

Git から落としてソリューションファイル ( .sln ) を実行したら、下記のエラーが表示され、プロジェクトが読み込まれない。( 0 プロジェクト ) このプロジェクトではユーザーの入力が必要です。詳細を調べるには、プロジェクトを再度読み込んでください。 …

Visual C++_プロジェクトに対して作成されるファイルの種類

C++

プロジェクト名..vcproj やら .vcxproj やら .vcxproj.filters とか未知だったので。 実際にプロジェクトにインクルードされるファイルは、プロジェクトの種類・およびウィザードで選択したオプションによって異なる。 .exe .dll 実行可能ファイルまたはダイ…

Visual Studio_C++ で Windows フォームの項目がない

C++

結論から 場所C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\内にあるフォルダ「VCProjectItems_WDExpress」を「VCProjectItems」にリネームする。 何故か 「 Visual Studio のレジストリのパスの値」と、「 Visual C++ のテンプレートのフォルダ…

C++_ポインタと配列の一覧

↑ が投稿日付 new

static ( 静的 ) メモ一覧

↑ new

C++_std::copy 追加

勘違いしていた。引数に指定した分がコピーされるのではなく、-1 されてコピーされる。故に第二引数は、コピーしたい範囲の + 1 とする。 std::copy ( InputIt first, InputIt last, OutputIt d_first ); first, last コピーする要素の範囲。 d_first コピー…

C++_std::copy

コピペ。 std::copy ( InputIterator first, InputIterator last, OutputIterator result );指定された範囲の要素をコピー。 result は [ first, last ) の範囲に含まれてはならない。[ first, last ) 内の要素を、それぞれ [ result, result + (last - firs…

C++_イテレータ ( iterator ) とは

std::copy で出てきたので。一応前に調べていた…。一応 C++ 配列を調べたので少し理解できるようになったかも。ただのコピペ。 抽象化されたポインタのことで、コンテナの要素を指し、移動や要素を参照・変更することが出来る。配列やコンテナのような範囲を…

C++_shared_ptr とは

ただのコピペ。スマートポインタの一種。メモ程度。しっかり理解はしていない。cv::Ptr<T> が知りたかった。cv::Ptr<T> は shared_ptr と同様のもの。 あるメモリの所有権を持つ unique_ptr<T> がただ一つに限られていたのに対し、shared_ptr<T> は同一のメモリの所有権</t></t></t></t>…