【问题标题】:How to Set Int Function from Class equal to Int in Main如何从类中设置 Int 函数等于 Main 中的 Int
【发布时间】:2018-02-13 10:45:43
【问题描述】:

我已经为 getLength、getWidth 和 getArea 设计了函数,我需要在我的 main 函数中将它们分配给 int 值,但我不知道如何。

我在下面发布了我的头文件、实现和 main.cpp 文件。

请注意。

泰。

头文件

#ifndef RECTANGLE_H
#define RECTANGLE_H

class Rectangle
{
    Rectangle();
public:
    int getLength;
    int getWidth();
    int getArea(int x, int y)
};
#endif

实施文件

#include "Rectangle.h"
#include <iostream>
using namespace std;

int Rectangle::getLength()
{
    int x = 0;
    cout << "Enter Length: ";
    cin >> x;

    return x;
}

int Rectangle::getWidth()
{
    int x = 0;
    cout << "Enter Width: ";
    cin >> x;

    return x;

}

int Rectangle::getArea(int x, int y)
{
    int area = x * y;
    return area;
}

这是我开始遇到问题的地方。这些函数返回一个整数,但我不知道如何将返回的整数分配给一个 int 值。

#include "Rectangle.h"
#include "Rectangle.cpp"
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int area, length, width = 0;

    vector <int> myVector;
    cout << "Lets Make Some Rectangles: " << endl;

    for (int i = 0; i < 5; i++) {
        length = Rectangle::getLength();
        width = Rectangle::getWidth();

        area = Rectangle::getArea(length,width);

        myVector.push_back(area);
    }

    int largest = 0;

    for (int i = 0; i < 5; i++) {
        if (myVector[i] >= myVector[i + 1]) {
            largest = myVector[i];
        }
    }
    cout << "The Largest Rectangle Has an Area of: " << largest;
    system("pause");
    return 0;
}

【问题讨论】:

    标签: c++


    【解决方案1】:

    只有当getLength(); 在类Rectangle 中声明为静态时,才能以这种方式调用member function Rectangle::getLength();

    如果member functions 未声明为静态,则可以通过类的对象访问它们。

    Rectangle obj;
    length = obj.getLength();
    

    另外,您正在跨越向量myVector 的有效边界。您已在向量中插入 5 个元素(从索引 0 到 4)并尝试在 i = 4 时通过 myVector[i] &gt;= myVector[i + 1] 访问第 6 个元素 myVector[5]

    找到最大的正确方法:

    int largest = myVector[0];
    
    for (int i = 1; i < myVector.size(); i++) {
        if (largest > myVector[i]) {
            largest = myVector[i];
        }
    }
    

    【讨论】:

    • 假设默认构造函数不是私有的,并且是实现的,并且getLength被声明为成员函数
    【解决方案2】:

    据我对 C++ 的了解,您需要创建将保存数据(宽度、长度)的成员变量,如果您需要创建将为这些成员变量获取参数的构造函数:

    Rectangle(int width, int length){
        m_width = width;
        m_length = length;
    }
    

    注意成员变量m_widthm_length

    并创建对象,该对象将使用构造函数保存数据。即

    Rectangle myRectangle = Rectangle(5,5)
    

    【讨论】:

      猜你喜欢
      • 2015-05-15
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 2010-10-02
      • 1970-01-01
      相关资源
      最近更新 更多