gpt4 book ai didi

c++ - "Error: no matching function for call distance::distance()"...无法从 main 中的类声明对象?

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:19 26 4
gpt4 key购买 nike

我是 OOP 的新手,我在这个任务中一直遇到这个错误。或许你能帮帮我。

这是类头文件:

class Distance : public Magnitude
{
private:
double Cantidad;
char* Unidad;

public:
Distance(double c, char* u);
Distance(const Distance& d);

double getDistance(){return Cantidad;}
void setDistance(double val) {Cantidad=val;}
char* getUnidad(){return Unidad;}
void setUnidad(char* uni) {Unidad=uni;}

virtual ~Distance();

Distance& operator =(const Distance & d);
Distance operator +(const Distance & d);
Distance operator -(const Distance & d);
Distance operator *(const Distance & d);
Distance operator /(const Distance & d);

friend ostream& operator << (ostream &o,const Distance &d);
friend istream& operator >> (istream &o, Distance &d);
};

这里是cpp文件,我在里面做了定义:

#include "Distance.h"

Distance::Distance(double c, char* u)
{
Cantidad=c;
Unidad=u;
}

Distance::Distance(const Distance& d)
{
cout << "[***] NumComplejo -> Constructor por copia " << endl;
Cantidad = d.Cantidad;
Unidad = d.Unidad;
}

Distance::~Distance()
{
//dtor
}

最后,这是出现错误的地方,在 main 中,我尝试从 Distance 类声明一个对象。

int main(int argc, char *argv[])
{

Distance d1; **/*right here*/**

编辑:如果我输入:Distance d1=Distance(1231,"CSDVS");它确实有效,但我需要一个空对象,这样我就可以在 >> 运算符上使用重载

最佳答案

错误是由于您试图使用您尚未定义的默认构造函数 来初始化对象。

[...] but I need an empty objet so I can use the overload on >> operator.

您可以通过简单地定义一个默认构造函数来做到这一点:

// …
Distance::Distance()
: Cantidad(0)
, Unidad(nullptr)
{}
// …

您也可能想使用 std::string用于字符串。

关于c++ - "Error: no matching function for call distance::distance()"...无法从 main 中的类声明对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23418915/

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