变量承接函数类型的方法

重点:

1.当两个类没有共同基类。

采用函数模板:类具有相同的函数

cpp 复制代码
class FirstCmd 
{
public:
	FirstCmd()=default;
	~FirstCmd() = default;

	void TestCmd() { std::cout << 10 << std::endl;};
};


class SecondCmd
{
public:
	SecondCmd() = default;
	~SecondCmd() = default;

	void TestCmd() { std::cout << 20 << std::endl; };
};



template<class T>
void Get(T* a)
{
	a->TestCmd();
}

int main()
{
	int a = 3;
	int b = a * a * a-a;
	FirstCmd* first=new FirstCmd();
	SecondCmd* second =new SecondCmd();

	auto iter = dynamic_cast<FirstCmd*>(first);
	auto se = dynamic_cast<SecondCmd*>(second);
	if (iter == nullptr)
	{
		Get(se);
	}
	else
	{
		Get(iter);
	}
	return 0;
}

2.当两个类有共同基类。

采用向下转型方式

cpp 复制代码
class BaseCmd
{
public:
	BaseCmd() = default;
	~BaseCmd() = default;

	virtual void TestCmd() = 0;
};



class FirstCmd:public BaseCmd
{
public:
	FirstCmd()=default;
	~FirstCmd() = default;

	virtual void TestCmd() { std::cout << 10 << std::endl;};
};


class SecondCmd :public BaseCmd
{
public:
	SecondCmd() = default;
	~SecondCmd() = default;

	virtual void TestCmd() { std::cout << 20 << std::endl; };
};

std::shared_ptr<BaseCmd> GetBaseCmd(bool check)
{
	if (check)
	{
		return std::make_shared<FirstCmd>();
	}
	else
	{
		return std::make_shared<SecondCmd>();
	}
}

int main()
{
	bool check{ false };

	auto base =GetBaseCmd(check);
	base->TestCmd();
	std::shared_ptr<BaseCmd> baseCmd = std::dynamic_pointer_cast<FirstCmd>(base);
	if (!baseCmd)
	{
		baseCmd=  std::dynamic_pointer_cast<SecondCmd>(base);
	}
	
	if (baseCmd)
	{
		baseCmd->TestCmd();
	}
	return 0;
}
相关推荐
Funny_AI_LAB9 分钟前
MetaAI最新开源Llama3.2亮点及使用指南
算法·计算机视觉·语言模型·llama·facebook
NuyoahC16 分钟前
算法笔记(十一)——优先级队列(堆)
c++·笔记·算法·优先级队列
jk_10119 分钟前
MATLAB中decomposition函数用法
开发语言·算法·matlab
weixin_4640780719 分钟前
C#串口温度读取
开发语言·c#
无敌の星仔21 分钟前
一个月学会Java 第2天 认识类与对象
java·开发语言
豆豆44 分钟前
为什么用PageAdmin CMS建设网站?
服务器·开发语言·前端·php·软件构建
penguin_bark1 小时前
69. x 的平方根
算法
FL16238631291 小时前
[C++]使用纯opencv部署yolov11-pose姿态估计onnx模型
c++·opencv·yolo
sukalot1 小时前
windows C++-使用任务和 XML HTTP 请求进行连接(一)
c++·windows
这可就有点麻烦了1 小时前
强化学习笔记之【TD3算法】
linux·笔记·算法·机器学习