gpt4 book ai didi

c++ - 不同类的相同功能包含在主 C++ 中

转载 作者:行者123 更新时间:2023-11-30 02:36:05 25 4
gpt4 key购买 nike

您可能已经从标题中注意到,我有不同的类,特别是 3 个,每个类都响应不同的树实现。

在 Tree1.h 中

class Tree1 {
public:

struct node{
char label;
node* nHMI_ptr;
node* nHD_ptr;
};

node* root;

Tree1();

~Tree1();

bool Empty();

Tree1::node& Root();

void AddSon(int i, node &n, char l);
/*
*
* (other functions)
*/
}

在 Tree2.h 中

class Tree2 {
public:

struct node{
char label;
node* nHMI_ptr;
node* nHD_ptr;
node* nFather_ptr;
node* nHI_ptr;
};

node* root;

Tree2();

~Tree2();

bool Empty();

Tree2::node& Root();

void AddSon(int i, node &n, char l);
/*
*
* (other functions)
*/
}

在 Tree3.h 中

class Tree3{
public:
Tree3();

~Tree3();

struct node;

struct nodeSon{
struct node* node_ptr;
nodeSon* nextNodeSon_ptr;
};

struct node{
char label;
node* nextNode_ptr;
struct nodeSon* nSon;
};

node* root;

bool Empty();

Tree3::node& Root();

void AddSon(int i, node &n, char l);
/*
*
* (other functions)
*/
}

如您所见,它们具有相同名称或标识符下的函数和成员。这是因为我想使用这个函数制作各种更复杂的算法,但棘手的部分是我想让这个算法独立于所使用的类。我首先想到的是在我的 main.cpp 上创建这个算法。

在 main.cpp 中

#include <cstdlib>
#include <iostream>
#include "Tree1.h"
//#include "Tree2.h"
//#include "Tree3.h"

void someFunc(node n) {
//do something by calling Tree functions
//E.g. call Empty(), call AddSon(...)
}

int main(int argc, char** argv) {
return 0;
}

我想要实现的是 someFunc(...) 在所有树上工作,而无需更改任何底层代码,只需启用 #include 之一并禁用其他两个即可。

  • 可以吗?
  • 我怎样才能做到这一点?

最佳答案

  • Is it possible to do it?

  • How can I accomplish this?

您只需提供一个模板函数即可:

template<class TreeType>
void someFunc(TreeType& treeContext, typename TreeType::node& n) {
//do something by calling Tree functions
//E.g. call Empty(), call AddSon(...)
}

关于c++ - 不同类的相同功能包含在主 C++ 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33180935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com