きままにブログ

プログラミングを主とした私のメモ帳です。寂しいのでコメントください笑

C++

ドラッグできる子供ウィンドウ

ドラッグして子供ウィンドウを親ウィンドウの内部で動かせる。右クリックで削除できる。複数追加できる。まだ自動的に動くような処理は書いていないがひとまずWin32APIの勉強になった。途中、どうしても分からないバグがあったが、これはC言語何でも質問掲示…

コンテナクラスとコンテナの関係

C++

要件 あるコンテナクラスCCがあって、要素のクラスCをリンクリストとして可変子保持する。各クラスCは適当なタイミングで自身を削除したい。どうすべきか? 案 クラスCに親の参照を持たせ、自身の削除が必要になったところで親に自信を削除するように通知する…

左辺値と右辺値

C++

右辺値と左辺値 C++では式の型(T, const T, volatile T, T&, T&&)以外にもうひとつ式の値を分類する用語がある。いままで左辺値、右辺値といっていたような類いである。 int x; x = 3; いままではxが=の左側にあるからxは左辺値、3は右側にあるから右辺値と…

C4239TypeからType&への変換です

C++

問題 #include <iostream> #include <cassert> using namespace std; class C { public: C() { cout << "create" << endl; } /*C(C&) { cout << "copy" << endl; }*/ }; C func() { C c; return c; } int main() { C c = func(); cin.get(); return 0; } においてコメントアウト</cassert></iostream>…

例外の後始末

C++

次のようにmain関数の中でlock-unlock処理の中に何らかの関数funcがあったとして、funcが例外を投げる可能性があるとする。例外の如何に関わらず、unlockが実行されるにはどうしたら良いだろうか? スコープを抜けたらデストラクタが呼び出されることを利用 v…

サブクラスから、派生元クラスの外部に公開したくないメンバを呼び出したい

C++

事案 class C { protected: int member; // 公開したくないメンバー }; class D : public C { public: void func(const C& c) { cout << c.member << endl; // Cのmemberを使いたい } }; これはコンパイルエラーとなる。このように引数に渡した派生元クラス…

reverseの実装例

C++

2つのイテレータを与えて、その間の要素を全て逆順に並び替えるreverse関数は、 template <class T> void reverse(T begin, T end) { for(; begin != end && begin != --end; begin++) { iter_swap(begin, end); } } のように実装できます。iter_swapは2つのイテレー</class>…