CookbookシリーズのCpp:その他
3019 ワード
質問01:アドレスを使用してデータ・メンバーまたはメンバー関数を参照する方法
クラス名と範囲オペレータにアスタリスクを付けて、クラスメンバーを正しく参照します.
クラス名と範囲オペレータにアスタリスクを付けて、クラスメンバーを正しく参照します.
- #include <iostream>
- #include <string>
-
- using namespace std;
-
- class MyClass {
- public:
- MyClass() : ival_(0), sval_("foo") {}
- ~MyClass() {}
- void incr() {++ival_;}
- void decr() {--ival_;}
-
- string sval_;
- int ival_;
- };
-
- int main()
- {
- MyClass obj;
-
- int MyClass::* mpi = &MyClass::ival_; // Data member pointers
- string MyClass::* mps = &MyClass::sval_;
-
- void (MyClass::*mpf)(); // A pointer to a memeber function
- mpf = &MyClass::incr;
-
- cout << obj.*mpi << endl;
- cout << obj.*mps << endl;
-
- (obj.*mpf)();
- cout << obj.ival_ << endl;
-
- return 0;
- }