gpt4 book ai didi

c++ - 检查调用者和参数是否相同

转载 作者:太空宇宙 更新时间:2023-11-04 15:51:40 26 4
gpt4 key购买 nike

例如我有四个类:

class A;

class B{
protected:
void check(const A &a);
};

class C : public A, public B;
class D : public B;

现在我想编写一个检查函数,如果调用者和参数相同则什么也不做:

void B::check(const A &a){
if(*this != a){
//do something
}
else{
//do nothing
}
}

然而,这不会编译,因为 B 类对 C 类一无所知,C 类有一天会调用 B 的函数检查自身。将 this 转换为 A 很容易,但如果有一天类 D 调用该检查,因为它与 A 无关,那么这将产生错误。那么这样的事情是如何完成的?

编辑:我可能不得不提到 C 类和 D 类将具有调用该检查的接口(interface),这在这些类之外是不可用的,但它除了将参数传递给内部函数外什么都不做

最佳答案

如果您向 A 添加一个虚拟析构函数,这将起作用:

void B::check(const A &a)
{
if (dynamic_cast<const B*>(&a) == this)
{
std::cout << "same object" << std::endl;
}
}

关于c++ - 检查调用者和参数是否相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7242354/

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