掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
C++のインスタンスメンバの関数ポインタ (ID:69293)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
仲澤@失業者さんはメンバ関数へのポインタを知らないのでは? ISO/IEC 14882:1998 において 5.2.2:Function Call と 5.3.1 Unary operators と、どちらにおいても > 「staticでないクラスメンバ関数のポインタを利用してはならない」 そんな旨の記載は無いので規格上問題ないっす。 仮想関数やインライン関数へのポインタをとっても、とったポインタ経由で 呼び出しを行っても、まったく問題ないっす。 # インライン展開されるかどうかは別として。 規格非合致な処理系はさておき。 struct testbase { inline virtual void func() { std::cout << "base\n"; } }; struct test : testbase { inline virtual void func() { std::cout << "derived\n"; } }; int main() { test t; t.func(); void (testbase::*p)() = &testbase::func; (t.*p)(); return 0; } 元発言者さんが static と非 static の違いをあっさり流しているほうが よっぽど危険だと思う。この両者の違いはクラス設計の根幹にかかわる ほどの違いなわけで、「ようなので」とか「見合わせよう」とか、 そういう一言で片付けられるような代物ではないっつーことで。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.