あなたが求めているのは、リフレクションと呼ばれる原理です。残念ながら、C / C ++はこの機能を提供しておらず、C ++オブジェクトに実装すると非常に複雑になります(可能であれば)。
この機能が必要な場合は、このようなメタプログラミング機能をサポートする別の言語を検討することをお勧めします。他のいくつかの言語では、これを正確に行うのは簡単です。たとえば、Rubyでは次のように言うことができます。
class Myclass
def initialize
end
def a
end
def b
end
end
x = Myclass.new
x.methods
=> ["inspect", "b", "clone", "taguri", "public_methods", "display", "instance_va
riable_defined?", "equal?", "freeze", "taguri=", "methods", "respond_to?", "dup"
, "instance_variables", "to_yaml_style", "__id__", "method", "eql?", "id", "sing
leton_methods", "send", "taint", "frozen?", "instance_variable_get", "__send__",
"instance_of?", "to_a", "type", "to_yaml_properties", "protected_methods", "obj
ect_id", "instance_eval", "==", "===", "instance_variable_set", "to_yaml", "kind
_of?", "extend", "to_s", "a", "hash", "class", "tainted?", "=~", "private_method
s", "nil?", "untaint", "is_a?"]
これにより、オブジェクトに関連付けられているすべてのメンバー関数(この場合はそれらの多くが自動的に生成されます)が一覧表示されます。インスタンス変数などについても同じことができます。他の多くの言語がこれらのタイプの機能を提供しています。
この機能があなたのしていることに重要であるなら、C / C ++が通常設計されているよりも高いレベルで働きたいと思われるので、プログラミング言語の選択を再検討することをお勧めします。ある種のオブジェクト/クラスジェネレータパターンを使用することで、この種のものをC ++に組み込むことは可能かもしれませんが、結果のクラスを記述したり使用したりするのは簡単ではありません。