gpt4 book ai didi

C++ struct 默认构造函数 mbed

转载 作者:行者123 更新时间:2023-11-28 03:33:35 25 4
gpt4 key购买 nike

我的结构定义如下:

struct localframevelo
{
double ivelo; //i(x) component of velocity
double cvelo; //c(y) component of velocity
double rvelo; //r(z) component of velocity
double speed; //total magnitude of velocity

localframevelo()
{
ivelo = 0;
cvelo = 0;
rvelo = 0;
speed = 0;
}
localframevelo(double init_ivelo, double init_cvelo, double init_rvelo)
{
ivelo = init_ivelo;
cvelo = init_cvelo;
rvelo = init_rvelo;
speed = sqrt(pow(ivelo, 2.0) + pow(cvelo, 2.0) + pow(rvelo, 2.0));
}
};

这是一个类,我试图在其中使用 localframevelo 的默认构造函数:

    class missionprofile
{
//misison waypoints structure************************
private:
double stdholdtime; // 0.25 second within tolerance radius to "reach" a waypoint
double stdtolrad; // 0.5 meter tolerance radius (error magnitude) to "be at" a waypoint
localframevelo stdvelo;
waypoint missionwaypoints[MAXLISTLENGTH];
int numwaypoints;

public:
missionprofile();
missionprofile(int points, double StdHoldTime, double StdTolRadius, localframevelo StdVelo);

};

这是我试图调用 localframevelo 的默认构造函数的类的默认构造函数的实现:

missionprofile::missionprofile()
{
numwaypoints = 0;
stdholdtime = 0;
stdtolrad = 0;
stdvelo(); //ERROR
}

我收到此错误:调用类类型的对象时没有适当的 operator() 或将函数转换为指向函数类型的指针。我正在使用 mbed 编译器,我的代码有什么问题?

最佳答案

您可以安全地删除这一行:

stdvelo();   

在函数体的上下文中,这被解释为对 localframevelo 实例的 operator()() 的调用,而不是初始化。无论如何,数据成员都是默认构造的, 没有任何显式初始化。但是你真正应该做的是在构造函数的初始化列表中初始化你的数据成员:

missionprofile::missionprofile() 
: numwaypoints(),
stdholdtime(),
stdtolrad(),
stdvelo()
{
}

对于 localframevelo 的构造函数和其他 missionprofile 构造函数也是类似的。

关于C++ struct 默认构造函数 mbed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11852222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com