C++ 从基到派生的静态转换后找不到成员函数
我正在尝试构建一个名为“step”的函数,它接受一个基类指针并执行一些操作。目前,我正在使用一个虚拟基类来启用一个公共接口C++ 从基到派生的静态转换后找不到成员函数,c++,inheritance,polymorphism,c++14,C++,Inheritance,Polymorphism,C++14,我正在尝试构建一个名为“step”的函数,它接受一个基类指针并执行一些操作。目前,我正在使用一个虚拟基类来启用一个公共接口 #include <iostream> using namespace std; class gym_action //dummy base { public: virtual ~gym_action(){} }; template<typename T> class action_helper : public gym_action
#include <iostream>
using namespace std;
class gym_action //dummy base
{
public:
virtual ~gym_action(){}
};
template<typename T>
class action_helper : public gym_action
{
public :
action_helper(T a) : action_item(a){}
T get_action() {return action_item;}
private:
T action_item;
};
void step(gym_action* act)
{
act = dynamic_cast<action_helper<int>*>(act);
cout<<act->get_action()<<endl;
}
int main()
{
action_helper<int> a(2);
//I will have more action_helper instansiations, like action_helper<Eigen::VectorXf> etc
cout<<a.get_action()<<endl;
step(&a);
}
#包括
使用名称空间std;
课堂体操动作//虚拟基地
{
公众:
虚拟~gym_action(){}
};
样板
集体行动帮助:公共健身房行动
{
公众:
行动(ta):行动(a)
T get_action(){return action_item;}
私人:
行动项目;
};
无效步骤(体操动作*动作)
{
act=动态施法(act);
cout即使在dynamic\u cast
之后,变量act
仍然是gym\u action*
类型。因此,您可能无法对其调用派生类成员函数
使用新变量
auto temp = dynamic_cast<action_helper<int>*>(act);
if ( temp != nullptr )
{
cout << temp->get_action() << endl;
}
auto-temp=dynamic_-cast(act);
如果(温度!=nullptr)
{
无法获取_操作()