使用公共函数调用私有函数
Calling a private function using a public funtion
在我的作业中,我需要从公共函数(set(int,int))调用私有函数(简化)。当我尝试编译时,我收到一个错误,说重新定义 set .我不确定我做错了什么,或者错误意味着什么。任何帮助都非常感谢。这是我所拥有的:
//Fraction.h
struct Fraction{
private:
int numerator;
int denonminator;
void simplify();
public:
void set(int n, int d){void simplify();};
void display() const;
};
//Fraction.cpp
#include <iostream>
using namespace std;
#include "Fraction.h"
void Fraction::set(int n, int d){
numerator = n;
denonminator = d;
simplify();
}
void Fraction::simplify(){
int i;
for (i = denonminator * numerator; i > 1; i--){
if( denonminator % i == 0 && numerator % i == 0){
numerator = numerator/i;
denonminator = denonminator/i;
}
}
}
void Fraction::display () const{
cout << numerator << " / " << denonminator;
}
Fraction::set
实现了两次:您已经在标头中实现了它 - 并在.cpp文件中再次实现它。
您必须决定一个实现。
看看这两种实现的作用,您可能应该将标题更改为读取
//...
void set(int n, int d);
//...
您定义了两次set
:
struct Fraction{
void set(int n, int d){void simplify();}; // <== #1
};
和:
void Fraction::set(int n, int d) { // <== #2
numerator = n;
denonminator = d;
simplify();
}
第一个定义无论如何都不会做你想要的 - 它不是调用simplify
,而是声明一个名为 simplify
的本地函数,它不接受任何参数并返回void
- 这与Fraction::simplify
无关。因此,只需将其替换为:
void set(int n, int d);
你定义了两次集合。最好声明一次
struct Fraction{
private:
int numerator;
int denonminator;
void simplify();
public:
// Dont use this-- void set(int n, int d){void simplify();}; //Defined here once
void set(int n, int d); //Just declare it
void display() const;
};
//Fraction.cpp
#include <iostream>
using namespace std;
#include "Fraction.h"
void Fraction::set(int n, int d){//Defined it again
numerator = n;
denonminator = d;
simplify();
}
void Fraction::simplify(){
int i;
for (i = denonminator * numerator; i > 1; i--){
if( denonminator % i == 0 && numerator % i == 0){
numerator = numerator/i;
denonminator = denonminator/i;
}
}
}
相关文章:
- 构造函数正在调用一个使用当前类类型的函数
- 如何在主函数中调用模板类
- 向量推回调用析构函数时调用析构函数
- 是否可以使用函数指针调用虚拟析构函数?
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- 没有匹配的成员函数来调用'push_back'错误
- 在模板化类的构造函数中调用构造函数
- 为什么从另一个构造函数内部调用C++构造函数不修改类变量?
- 如何通过python方法和kwargs来提升python的c++函数和调用
- 推迟析构函数的调用
- Tbb 库:错误:编写自定义类函数而不是 lambda 表达式时,对函数的调用不匹配
- 在模板化的 Rcpp 函数中调用另一个 cpp 函数
- 如何使派生类函数在调用时始终调用相同的基类函数?
- 在成员构造函数之后调用基类构造函数
- 为什么在传递给函数而不是构造函数时调用析构函数?
- 如何从不同的类中获取函数来调用在 Main 中声明的对象?
- 为什么我不能像这样在静态成员函数中调用静态成员变量?
- 从带有参数的基函数指针调用基方法
- localtime() 函数正在调用 ___lll_lock_wait_private(),这会使线程陷入死锁
- 我不知道为什么复制构造函数的调用在 c++ 中不稳定