C++ 为什么不是';t我的类使用值I';你给了它?
在尝试理解和使用类和方法的过程中,我一直在尝试创建一个具有私有值的类,该类使用一个方法来更改这些值。我创建了一个程序,该程序请求用户输入(长度和宽度),并根据这些值创建一个“矩形”(它只存储他们输入的值,就像它是一个矩形一样)。出于某种原因,我使用的方法不会改变类中的私有长度和宽度值。我使用.h文件来创建类,.cpp来创建函数,该函数使用main.cpp来调用函数来获取输入。为了简单起见,我删除了.cpp文件中代码的输入验证部分,因为它不影响类值。你能帮我找到我的错误吗 包含类的My.h文件:C++ 为什么不是';t我的类使用值I';你给了它?,c++,class,constructor,C++,Class,Constructor,在尝试理解和使用类和方法的过程中,我一直在尝试创建一个具有私有值的类,该类使用一个方法来更改这些值。我创建了一个程序,该程序请求用户输入(长度和宽度),并根据这些值创建一个“矩形”(它只存储他们输入的值,就像它是一个矩形一样)。出于某种原因,我使用的方法不会改变类中的私有长度和宽度值。我使用.h文件来创建类,.cpp来创建函数,该函数使用main.cpp来调用函数来获取输入。为了简单起见,我删除了.cpp文件中代码的输入验证部分,因为它不影响类值。你能帮我找到我的错误吗 包含类的My.h文件:
#pragma once
#include <iostream>
using namespace std;
class Rectangle
{
private:
double length;
double width;
public:
Rectangle()
{
length = 0;
width = 0;
}
Rectangle(double a)
{
length = a;
width = a;
}
Rectangle(double l, double w)
{
length = l;
width = w;
}
void SetLenWid(double l, double w)
{
if (l == w)
{
Rectangle (l);
cout << "You have created a square with sides equal to " << length << endl;
}
else
{
Rectangle (l, w);
cout << "You have created a rectangle of length = " << length << " and width = " << width << endl;
}
}
};
#pragma一次
#包括
使用名称空间std;
类矩形
{
私人:
双倍长度;
双倍宽度;
公众:
矩形()
{
长度=0;
宽度=0;
}
矩形(双a)
{
长度=a;
宽度=a;
}
矩形(双l,双w)
{
长度=l;
宽度=w;
}
void SetLenWid(双l,双w)
{
如果(l==w)
{
矩形(l);
cout矩形(l,w);
不会做你认为它会做的事。它会创建一个临时的矩形,然后立即销毁
Rectangle(l);
也没有达到预期效果。它相当于Rectangle l;
,它使用0参数构造函数创建一个名为l
的矩形
您需要*这=矩形(l,w);
,或者直接分配给字段。矩形(l,w);
不做您认为它做的事。它创建一个临时的矩形,然后立即销毁
Rectangle(l);
也没有达到预期效果。它相当于Rectangle l;
,它使用0参数构造函数创建一个名为l
的矩形
你想要*这个=矩形(l,w);
,或者直接分配给字段。你使用了调试器吗?你想用矩形(l);
和矩形(l,w);
在SetLenWid
中做什么?你需要的可能是void SetLenWid(双l,双w){length=l;width=w;}
你使用了调试器吗?你想用矩形(l);
和矩形(l,w);
在SetLenWid
中做什么?你需要的可能是void SetLenWid(双l,双w){length=l;width=w;}
非常感谢,这真的很有帮助!@0marAbzd不客气!按左边的绿色勾号将您的问题标记为已解决。非常感谢,这真的很有帮助!@0marAbzd不客气!按左边的绿色勾号将您的问题标记为已解决。
#include "Rectangle.h"
#include <iostream>
void getInput()
{
double l, w;
cout << "Enter the length: ";
cin >> l;
cout << "Enter the width ";
cin >> w;
Rectangle init;
init.SetLenWid(l, w);
}
#include "Rectangle.h"
#include "Rectangle.cpp"
#include <iostream>
using namespace std;
int main()
{
getInput();
return 0;
}