class MyClass {
public:
void Func()
{
std::cout << "call Func()" << std::endl;
}
};
namespace XXX {
void XSD() {};
}
int main()
{
void (*pF)() = &XXX::XSD; void (MyClass::*pFunc)() = &MyClass::Func; MyClass c; (c.*pFunc)(); MyClass* p = &c; (p->*pFunc)();
}
メンバ関数ポインタについてです。
class内にあるメンバ関数を変数に入れようとすると
void (MyClass::*pFunc)() = &MyClass::Func; このように名前空間も指定しないとビルドができません
名前空間内のものはMyClass::のように必要だと思い
namespace XXXというところにXSDという関数を作り
void (XXX::*pF)() = &XXX::XSD; このようにしましたが今度はビルドができませんでした
(void (*pF)() = &XXX::XSD; でいけました。)
Class とnamespaceでなぜこのような違いがあるのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/29 08:36