WindowsでMinGWを使ったC++コンパイル環境構築手順

C++

WindowsPCにC++のコンパイル環境を作ったので手順をまとめておく。WindowsのC++コンパイル環境というとVisualStudioが有名だが、 今回は別のVisualStudioではなくMinGWを使いg++のコンパイラをインストールし環境をつくる。 手順①:ダウンロード まずは以下…

テンプレートの実装はヘッダに書かないといけない

C++

ここ10年ほどC++から離れていたので最近学びなおしをしている。C++にはテンプレートという機能があるが、 これを学びなおすべくテスト用のクラスをテンプレートを使い実装してみた。 // Hoge.h template <class T> class Hoge { private: T m_hoge; public: T GetHoge</class>…

VisualStudioCodeで定義先へ移動&元の位置へカンタンに戻る方法

コードを書いていると関数の定義先へ移動し内容を確認した後、 元の位置(関数の呼び出し元)へ戻るということをよくやる。VisualStudioCodeにもこのショートカットキーあるはずだと思い調べたら見つかったので、 備忘録として残す。 定義元へ移動:F12 元の…

asと()キャストの正しい使い分け方法

C#

asキャストとは asと()キャストの違い 違い①:キャスト失敗時のふるまい 違い②:キャストできる対象のオブジェクト 正しい使い分け方法 asキャストとは C#ではCやC++にはなかったas演算子を使ってキャストをする機能が追加された。 使い方としてはキャストし…

SMB2.0が原因で共有フォルダアクセスが遅い場合の対処法

Windows10ではSMB2.0というファイル転送プロトコルが使われている。 このSMB2.0だがネットワークの負荷を軽減させるためにクライアント側にキャッシュを持たせる機能が入っており、共有フォルダへのアクセスが遅くなる場合がある。デフォルトは10s毎にサーバ…

Roundメソッドを使った正しい四捨五入の実装方法

C#

C#の標準クラスではMath.Roundという数値の四捨五入に使えるメソッドがある。 docs.microsoft.comこのMath.Roundメソッドだがそのまま何も考えずに四捨五入で使うと問題が起きる。 例えば以下のようなケース。 Console.WriteLine(Math.Round(1.5)); Console.…

Enumの要素数を1行で取得する方法

C#

実装時にEnumの要素数を使って何かをしたいケースがよくある。 Enum自体は配列等ではないので、そのままでは要素数にあたるメソッド等は持っていない。 でも1行でカンタンに要素数取得する方法がある。例えばこんなenumの要素数を取得する場合 public enum …

DataGridViewTextBoxにテキストと画像を表示させる方法

C#

DataGridViewTextBoxはテキストだけ表示するのが普通だが、セル内にテキストに加えて画像も一緒に描画したりすることができる。 DataGridViewのCellPaintingイベントで自力描画させれば割とカンタン。 セルを選択時は晴れ、非選択時は曇り画像を表示させるよ…

DataGridViewComboBoxCellを1クリックでドロップダウンさせる方法

C#

DataGridViewの実装でDataGridViewComboBoxCellを使うことがたまにある。 このコンボボックスは普通のSystem.Windows.FormsのComboBoxと仕様が違い、デフォルトだと1クリックではリストがドロップダウンしてくれないのだ。 ドロップダウンしない2回クリッ…

数字以外が入力で色が変わるTextBoxの実装方法

C#

テキストボックスに指定した文字(数字等)が入力されたら背景色を変えて、ユーザーにルール違反していることを通知したいことがある。 テキストボックスのイベントに少し処理追加すればカンタンに実装することができる。 public partial class Form1 : Form…