gpt4 book ai didi

具有相同名称的 C++ 虚拟覆盖函数

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:38 24 4
gpt4 key购买 nike

我有类似的东西(简化)

class A
{
public:
virtual void Function () = 0;
};

class B
{
public:
virtual void Function () = 0;
};

class Impl : public A , public B
{
public:
????
};

如何实现 A 的 Function () 和 B 的 Function() ?Visual C++ 允许您仅定义内联的特定函数(即不在 cpp 文件中),但我想这是一个扩展。海湾合作委员会对此提示。是否有标准的 C++ 方法来告诉编译器我要覆盖哪个函数?

(视觉 C++ 2008)

class Impl : public A , public B
{
public:
void A::Function () { cout << "A::Function" << endl; }
void B::Function () { cout << "B::Function" << endl; }
};

谢谢!

最佳答案

您不能在那里使用限定名称。如果您编写 void Function() { ... },您将覆盖两个 函数。 Herb Sutter 展示 how it can be solved .

另一种选择是重命名这些函数,因为显然它们做了一些不同的事情(否则我看不到用相同的行为覆盖两者的问题)。

关于具有相同名称的 C++ 虚拟覆盖函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12956281/

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