[SIMILAR] WITH 10985 バ関 WITH 7748 非co WITH 7000 const WITH 5742 数へ WITH 4137 float WITH 3694 struct WITH 2982 関数 WITH 2452 void WITH 2437 template WITH 1971 返答 WITH 1747 新発 WITH 1101 ポイ WITH 1049 トパ WITH 955 ラメ WITH 835 安全 WITH 799 変換 WITH 720 パラ WITH 681 のポ WITH 664 ンバ WITH 637 タに WITH 438 ンタ WITH 436 ピン WITH 416 メン WITH 385 発見 WITH 382 テン WITH 344 ンプ WITH 253 イン WITH 248 プレ WITH 222 ータ WITH 194 メー WITH 192 レー WITH 139 ート の検索結果 153 件中 1 - 10 件目 (0.069529544 秒)
struct X { void foo() const; }; void (X::*pfn)() = &X::foo; これは安全ではないかという話です。今のところ付いている返答はピントのずれたものばっかり。 ついでに、テンプレートパラメータにはfloatやdoubleは使えないなんていうのも新発見でした。こんなのです。 template<float f> struct X { }; ...
色々調べてみたところわかりました。そもそもVCでは、メンバへのポインタを効率よく動かすためにこしゃくな^^;最適化を行っているようです。なので、以下でメンバ関数へのポインタのサイズが異なります。 struct A; // 前方参照のみ typedef void (A::*PFN)(); // sizeof(PFN)は16 struct A { // 完全なクラス宣 ...
# (スコア:7046)
メンバ関数のポインタを二つくらい引数にしてコンストラクタを呼び出すと、なぜだか呼び出されたときに引数が壊れているという現象が起きました。なんでだろう? 識別子が長いのが原因かなと思って、試しに関数ポインタをtypedefしてそちらを使うようにしたらちゃんと動作する用になったので良かったのですが、い ...
# (スコア:6138)
C++のコードをアセンブラに落として調べているのですが、メンバ関数を呼び出すときには、r0にthisをセットしてから関数にジャンプすれば良い模様です。 なんだか例外処理と関係なくなって、ARMのアセンブラ入門みたいになっちゃってますね^^;;。 ...
# (スコア:6124)
長い識別子で書いたように、関数ポインタを受けるコンストラクタでクラッシュする件なのですが、少しいじったら再発するようになってしまいました。で、色々と調べたところ識別子の長さは関係なさそうです。小さなプログラムで再現させられていないのでまだ不確かなのですが、前方参照宣言しかしていないクラス ...
# (スコア:6049)
どうやらSDカードのドライバがダメダメなようで、一回電源を落とすとそれ以前に開いていたファイルのハンドルが全部無効になってしまうようです。GetLastError()で調べると、'The device has been removed.'だそうで。。CFを使った場合には問題ないのでやはりドライバがダメなんでしょうね。。 QMAILの場合、メ ...
# (スコア:3860)
C++09の話。 テンプレートエイリアス テンプレートtypedefとして望まれていたものはテンプレートエイリアスとなるようです。 template<typename T> using Registry = std::map<std::string, T>; テンプレート引数がないものもtypedefの代わりに使えます。 using Size = int; 可変長テンプレート 可変長のテンプ ...
# (スコア:3769)
C++で関数としてマルチメソッド(複数の引数の動的型に応じて呼び出し先の関数を切り替える方法)を実装してみています。 基本的にはオーバーロードの解決を実行時に行うようにしたようなインターフェイスで、 struct A { virtual ~A() {} }; struct B : public A {} void foo(virtual A&, virtual A&); void f ...
# (スコア:2946)
VC6はなぜかテンプレート引数をルックアップするときに他のローカル名を見てしまうようです。 template<class T> struct X { typedef typename T::Foo Bar; }; struct Y { typedef int Foo; }; struct T {}; // (#) void foo() { X<Y>::Bar bar; } (#)の行を削るとコンパイルできるようになります。適当なテンプ ...
# (スコア:2370)
std::mem_funと同じような感じで、構造体のメンバにアクセスできるといいなと思って作ってみました。 template<class T, class U> struct mem_data_t : public std::unary_function<T, U> { mem_data_t(U T::*p) : p_(p) {} U operator()(T* p) const { return p->*p_; } U T::*p_; }; template<class T, class ...
# (スコア:2324)
# (スコア:10000)