首页 > 解决方案 > 如何通过 C++ 中的公共函数访问私有函数成员?

问题描述

该程序用于对矩形进行简单area()计算。它正在编译并运行良好,但答案是错误的(计算)。我想我通过使用公共方法调用私有成员函数来搞砸它们。谁能指出我的错误?perimeter()

recClass.h

#ifndef RECTANGLE_H
#define RECTANGLE_H

class Rectangle{
    public:
        Rectangle(double length = 1.0,double width = 1.0);
        void setLengthAndWidth(double,double);
        double getLength();
        double getWidth();
        void printAreaAndPerim();
    private:
        double length;
        double width;
        double perimeter();
        double area();
        
};

#endif  

矩形.cpp

#include<iostream>
using std::endl;
using std::cin;
using std::cout;

#include "recClass.h"

void Rectangle::setLengthAndWidth(double a,double b){
    length = a;
    width = b;
}
double Rectangle::getLength(){
    return length;
}
double Rectangle::getWidth(){
    return width;
}

double Rectangle::perimeter()
{
    double perim;
    perim = (length + width) * 2;
    return perim;
}

double Rectangle::area()
{
    double areaOfRec;
    areaOfRec = length * areaOfRec;
    return areaOfRec;
}

void Rectangle::printAreaAndPerim(){
    cout << "Has the Perimeter: " << perimeter() << "\nAnd area: " << area() << endl;
}  

//RectangleMain.cpp

#include<iostream>
using std::endl;
using std::cin;
using std::cout;

#include "recClass.h"

int main()
{
    Rectangle rec;
    rec.setLengthAndWidth(4.2,5.5);
    
    cout << "Rectangle with length: " << rec.getLength() <<"\nand width: " << rec.getWidth() << endl;
    rec.printAreaAndPerim();
        
        return 0;
}

标签: c++classprivate-members

解决方案


我在代码中看到 2 个错误。

  1. 在头文件中。构造函数名称有错字。“Ractangle()”。

  2. Rechtangle.cpp的 area 函数中,变量areaOfRec未初始化。它用于计算。函数应该是:

    面积=长*宽


推荐阅读