Dal*_*ore 4 c++ parameters function arduino parameter-passing
class Stepper
{
public:
Stepper(int en,int dir, int clk, void(*f))
{
}
};
class Turret : public Stepper
{
public:
Turret(int x,int y, int z,void (*f)):Stepper(x,y,z,void(*f))
{
}
};
void TurretStep()
{
}
Turret t(2,3,4,TurretStep);
Run Code Online (Sandbox Code Playgroud)
好吧所以这给了我一个空*不是指向对象的类型.我要做的就是将void函数作为参数传递给我的构造函数.
你有2个问题.
第一个是你没有函数指针的正确语法.
函数指针的语法是
return_type(*name)(arguments)
Run Code Online (Sandbox Code Playgroud)
由于你的函数有void
返回类型而且不带任何参数,所以它是
void(*f)()
Run Code Online (Sandbox Code Playgroud)
第二个是尝试将函数指针传递f
给基类构造函数
在这里,您将类型传递给基类,而实际上您只想传递变量
不正确(在语法和传递参数类型方面)
Stepper(x,y,z,void(*f))
Run Code Online (Sandbox Code Playgroud)
正确(只是传递f
,函数指针变量本身
Stepper(x,y,z,f)
Run Code Online (Sandbox Code Playgroud)
以下是修复的代码:
class Stepper
{
public:
Stepper(int en,int dir, int clk, void(*f)())
{
}
};
class Turret : public Stepper
{
public:
Turret(int x,int y, int z,void (*f)()):Stepper(x,y,z,f)
{
}
};
void TurretStep()
{
}
Turret t(2,3,4,TurretStep);
Run Code Online (Sandbox Code Playgroud)