如何在函数中重新定义函数
How do I redefine a function within a function?
也许有一种更简单的方法可以做到这一点,但我正在做的是编写一个由两个二进制搜索树组成的类。我用这些树来存储包含各个国家的奥运奖牌数的结构。结构如下:
struct Country{
string country;
int rank;
int gold;
int silver;
int bronze;
Country(): country(""), rank(NULL), gold(NULL), silver(NULL), bronze(NULL){}
Country(string ncountry, int ngold, int nsilver, int nbronze): country(ncountry), rank(NULL), gold(ngold), silver(nsilver), bronze(nbronze) {}
}
然后我想为每棵树添加一个新的国家。我遇到的问题是,为了使二进制搜索树方法工作,我需要重载比较运算符(>,<,==,!=,<=,>=)。这并不特别困难,但它们需要有不同的定义。当我添加到国家树时,我需要比较国家名称,当我添加至排名树时,需要比较排名。所以我想做这样的事情:
void addNewCountry(string name, int goldMedalCount, int silverMedalCount, int bronzeMedalCount){
//Define comparison operators to compare based on rank
rankTree.add(CountryNode(name, goldMedalCount, silverMedalCount, bronzeMedalCount));
//Define comparison operators to compare based on country
countryTree.add(CountryNode(name, goldMedalCount, silverMedalCount, bronzeMedalCount));
}
通常我会有多个方法,但在运算符重载的情况下,我真的不能做到这一点。谢谢
我最终所做的是在运算符重载中执行一个指向函数的指针。通过这种方式,我可以在需要时将指针重新分配给另一个函数,从而改变函数的内部结构,而无需通过通常的通道重新定义它。下面是我所做的一个简短的演示程序:
#include <iostream>
using namespace std;
int (*pointerSwitch) (int) = NULL;
int square(int input){
return input*input;
}
int doubleNum(int input){
return input*2;
}
int variableFunction(int input){
return pointerSwitch(input);
}
int main(){
pointerSwitch = □
cout << variableFunction(10) << endl;
pointerSwitch = &doubleNum;
cout << variableFunction(10) << endl;
}
我们运行同一个函数两次,但修改了内部。输出为:
100
20
相关文章:
- 不同翻译单元中不可重载的非内联函数定义
- Visual Studio中的函数声明和函数定义问题
- 编写代码时C++出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- 具有enable_if外部类原型的模板类构造函数定义
- 类的前向声明之后的类成员函数定义,在类声明之前
- 为函数定义符号不明确的指针参数
- C++模板专用化 - 无法匹配函数定义
- 错误:在第 6 行'{'标记之前,此处不允许使用函数定义
- 找不到 #define 的函数定义
- 根据类型特征更改函数定义?
- 将抽象基类中的所有纯虚函数定义为 varaidaic 模板
- 命名空间更改函数定义
- "Type&"与C++函数定义中的"Type*"
- C++:为什么允许在另一个函数中声明函数,而不允许在函数定义中声明?
- 如何从 C++ 中的现有模板函数定义新函数
- 私有在函数定义/实现的返回值范围内是什么意思 (c++)?
- 越界成员函数定义是否需要一个完全限定的类名,直到全局范围
- 为什么c++允许成员函数定义中实例的私有成员访问
- Qt基类函数定义
- C++函数定义中参数列表后面额外一对括号的含义