C++中如何通过public函数访问私有函数成员?
How to access private function member through public function in C++?
本程序用于对矩形进行area()
和perimeter()
的简单计算。它正在编译并且 运行 很好,但答案是错误的(计算)。我想我通过使用 public 方法调用私有成员函数搞砸了。谁能指出我的错误?
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
Rectangle.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;
}
我在代码中看到 2 个错误。
在头文件中。
构造函数名称有错字。
"Ractangle()"。
在Rechtangle.cpp的area函数中,变量areaOfRec
未初始化。它用于计算。函数应该是:
面积=长*宽
本程序用于对矩形进行area()
和perimeter()
的简单计算。它正在编译并且 运行 很好,但答案是错误的(计算)。我想我通过使用 public 方法调用私有成员函数搞砸了。谁能指出我的错误?
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
Rectangle.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;
}
我在代码中看到 2 个错误。
在头文件中。 构造函数名称有错字。 "Ractangle()"。
在Rechtangle.cpp的area函数中,变量
areaOfRec
未初始化。它用于计算。函数应该是:面积=长*宽