nprogram’s blog

気ままに、プログラミングのトピックについて書いていきます

C++

Google TestをVisual Studio 2017で簡単導入 [C++]

C++

はじめに Visual Studio 2017を使えば、Google Testを用いたプロジェクトが割と簡単に作成できます。 なお、現状は、C++のプロジェクトでのみ適用可能です。C#は不可 (泣)。 実現例 (プロジェクトテンプレートからGoogle Testプロジェクトを作成可能) 環境 V…

MFCでBitmapファイルを開く(BITMAPINFOHEADER, BITMAPINFOHEADERを取得) [C++][MFC]

C++

はじめに MFCでBitmapファイルを開く方法を下記に記載します。 <使用例> ソースコードファイルの記載は以下のとおりです。クラスではなく、ユーティリティ関数として作成しました。 [BitmapUtil.cpp] #include "stdafx.h" #include "BitmapUtil.h" bool Load…

Google Test導入方法 [VS2017] [Cmake] [C++]

環境について 以下の環境で、Google Testを使用してみます。 Windows 10 Visual Studio 2017 Community Cmake 3.10.2 C++ なお、Visual Studio 2017 バージョン 15.5 以降では、Google Test が C++ ワークロードでのデスクトップ開発の既定のコンポーネント…

マルチバイト文字列(std::string)とワイド文字列(std::wstring)の間の変換を行うライブラリが便利すぎる [C++]

C++

最近、仕事でMFCのアプリケーションをUnicode対応する仕事をしていて、以下のライブラリを使わせていただきました。 マルチバイト文字列(std::string)とワイド文字列(std::wstring)の間の変換を行うライブラリが便利すぎたので、紹介させてください。 本ライ…

無効パラメータハンドラーとセキュア関数でバッファオーバーラン対策 [C++]

C++

はじめに Microsoft Visual Studio Community 2017を使用して、C++コンソールプロジェクトでプログラムを作成しています。 C++警告レベルはデフォルト(レベル3 (/W3))を使用しています。 セキュア関数を使用しないで、strcpy関数で文字列をコピーした場合 以…

C++11 文法について [C++]

C++

以下のページに詳しく書いてあります。 cpprefjp.github.io 範囲for文 型推論 ラムダ式 型alias typedef ⇒ usingを使おう typedefはオワコン 新初期化記法 リストイニシャライザ override

Observerパターンについて [C++]

C++

Observerとは、英語で観察者を意味します。 Observer パターンとは、状態の変化を観察することを目的としたものですが、どちらかというと「観察」よりも「通知」に重点の置かれたものになっています。 あるインスタンスの状態が変化した際に、そのインスタン…

Strategy Patternについて [C++]

C++

[Duch.h] #include <iostream> using namespace std; //QuackBehavior インターフェース class QuackBehavior { public: virtual ~QuackBehavior() {} virtual void quack() const = 0; //純粋仮想関数(派生クラスに) }; //QuackBehaviorインターフェースを実装したQua</iostream>…