【发布时间】:2021-09-09 01:05:37
【问题描述】:
免责声明:我是一名 C 开发人员,这是我第一次在 C++ 中尝试这样的事情。我对该语言的经验为零。
我有一个类 Bob,它有一个指向函数 myFunction 作为私有成员的指针。
我想继承类Bob,并使用基类构造函数将派生类的方法传递给指针函数。
这是我的代码:
#include <iostream>
using FuncHandler = void (*)(int x);
class Bob
{
protected:
Bob(FuncHandler x)
{
myFunction = x;
// When I call the function here
// I get garbage...
// x value is = 932452288
myFunction(10);
}
private:
FuncHandler myFunction;
};
class Alice : public Bob
{
public:
Alice() : Bob(reinterpret_cast<FuncHandler>(&Alice::foo))
{
}
void foo(int x);
};
void Alice::foo(int x)
{
std::cout << "x value is = " << x << "\n";
}
int main(void)
{
Alice obj1;
return 0;
}
问题是我做错了什么,输出垃圾?
【问题讨论】:
-
让它
static void foo(int x); -
@Eljay 你是对的!谢谢 !!!你能发布一个答案让我接受吗?
标签: c++ inheritance constructor