gpt4 book ai didi

c++ - 无法将 double 转换为字符串

转载 作者:行者123 更新时间:2023-11-30 05:47:07 25 4
gpt4 key购买 nike

我一直在开发一个计算盒子体积的程序,使用类来帮助我了解如何使用类。作为程序的一部分,我想将对象的长度、宽度和高度转换为字符串以显示盒子的尺寸。当我从我的主文件运行代码时,它崩溃了。当我从类文件运行它时,我得到“无法将 Box::length 从 double 转换为 std::string。如何修复转换错误?

#include <iostream>
#include <stdexcept>
#include <sstream>
#include <iomanip>
#include <string>

using namespace std;

class Box
{
public:
double length;//length of the box
double height;//height of the box
double width;//with of the box

Box(): length(1), height(1), width(1){}

//Parameterized Constructor
Box(double length, double width, double height);


double getVolume(void);

//Mutators
void setLength(double leng);
void setWidth(double wid);
void setHeight(double hei);
//Acessors
string toString() const;
string getLength();
string getWidth();
string getHeight();
};//end class

//member function definitions

double Box::getVolume(void)//get volume will cal and output the volume when called
{
return length * width * height;
}
void Box::setLength(double leng)
{
const double MIN_LENGTH = 0.1;//constants for min/max for range check and out_of_range exception
const double MAX_LENGTH = 99;
if (length > MAX_LENGTH || length < MIN_LENGTH)
{
stringstream strOut;//declare string stream

strOut << "Length is out of range. Length must be between" << MIN_LENGTH << " and " << MAX_LENGTH << ".";//error msg
throw out_of_range(strOut.str());
}
else
{
length = leng;// if length is within range, store it
}
}
string Box::getLength()
{
return length;
}
void Box::setWidth(double wid)
{
const double MIN_WIDTH = 0.1;//constants for min/max for range check and out_of_range exception
const double MAX_WIDTH = 99;
if (length > MAX_WIDTH || length < MIN_WIDTH)
{
stringstream strOut;//declare string stream

strOut << "Width is out of range. Width must be between" << MIN_WIDTH << " and " << MAX_WIDTH << ".";//error msg
throw out_of_range(strOut.str());
}
else
{
width = wid;// width is in range, store it
}
}

string Box::getWidth()
{
return width;
}
void Box::setHeight(double hei)
{
const double MIN_HEIGHT = 0.1;//constants for min/max for range check and out_of_range exception
const double MAX_HEIGHT = 99;
if (length > MAX_HEIGHT || length < MIN_HEIGHT)
{
stringstream strOut;//declare string stream

strOut << "Height is out of range. Height must be between" << MIN_HEIGHT << " and " << MAX_HEIGHT << ".";//error msg
throw out_of_range(strOut.str());
}
else
{
height = hei;// height is in range, store it
}
}
string Box::getHeight()
{
return height;
}
string Box::toString() const
{
stringstream strOut;
strOut << "Length: " << getLength() << endl
<< "Width: " << getWidth() << endl <<
"Height: " << getHeight() << endl;
return strOut;
}

最佳答案

此编译错误发生在 getWidth、getHeight、getLength 函数的返回语句中。这是因为您声明它们返回一个字符串,但却返回了 double 的宽度、高度和长度。编译器发现没有从 double 到 string 的自动转换。

要解决此问题,您只需将函数的返回类型从字符串修复为 double :

double getLength(); 
double getWidth();
double getHeight();

我注意到另一个错误:

doubletostring.cpp:104:25: error: reference to non-static member function must be called
strOut << "Length: " << getLength << endl

和 toString 方法中的类似错误。只需在末尾添加 () 即可将它们转换为函数调用:

strOut << "Length: " << getLength() << endl

关于c++ - 无法将 double 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28665936/

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