私はこの2つのクラスを持っています:
class IBaseA
{
public:
virtual bool sayHello(std::string&) = 0;
~IBaseA(){}
};
class BaseA: public IBaseA
{
public:
virtual bool sayHello(std::string &str)
{
std::cout << "Hello " << str << std::endl;
return (true);
}
BaseA(){}
};
なぜ私がそのようなことをすることができないのか説明してもらえますか
bool (IBaseA::*ptr)(std::string&) = &BaseA::sayHello;
エラー: 「bool (BaseA:: )(std::string&) {aka bool (BaseA:: )(std::basic_string&)}」を「bool (IBaseA:: )(std::string&) {aka bool 」に変換できません(IBaseA:: )(std::basic_string&)}' 初期化中
なんでこんなことができないのかわからない。
しかし、割り当てを変更すると
bool (IBaseA::*ptr)(std::string&) = &IBaseA::sayHello;
その後、このポインターを問題なく使用できます
BaseA A;
(A.*ptr)(str);
編集:答えてくれてありがとう、私はすべてのアドレスがvtableにあるので、私がウィキペディアから理解したことによると、それらは同じ場所であると考えていました.