C++ 为什么不是';t我的类使用值I';你给了它?

C++ 为什么不是';t我的类使用值I';你给了它?,c++,class,constructor,C++,Class,Constructor,在尝试理解和使用类和方法的过程中,我一直在尝试创建一个具有私有值的类,该类使用一个方法来更改这些值。我创建了一个程序,该程序请求用户输入(长度和宽度),并根据这些值创建一个“矩形”(它只存储他们输入的值,就像它是一个矩形一样)。出于某种原因,我使用的方法不会改变类中的私有长度和宽度值。我使用.h文件来创建类,.cpp来创建函数,该函数使用main.cpp来调用函数来获取输入。为了简单起见,我删除了.cpp文件中代码的输入验证部分,因为它不影响类值。你能帮我找到我的错误吗 包含类的My.h文件:

在尝试理解和使用类和方法的过程中,我一直在尝试创建一个具有私有值的类,该类使用一个方法来更改这些值。我创建了一个程序,该程序请求用户输入(长度和宽度),并根据这些值创建一个“矩形”(它只存储他们输入的值,就像它是一个矩形一样)。出于某种原因,我使用的方法不会改变类中的私有长度和宽度值。我使用.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;
}