gpt4 book ai didi

C++类型重载问题

转载 作者:太空狗 更新时间:2023-10-29 20:55:46 24 4
gpt4 key购买 nike

我在一个项目中有 3 个类,A、B 和 C。B 是从 A 派生的。B 可以从 C 构造(它有一个构造函数 B::B(C& c)。如果一个方法需要类型 B ,我可以改用 C 实例。

虽然C可以转换为B,但我不能将C直接作为参数传递给需要A的函数。

void func(A a) {}
C c;
// calling func
func(c); // compile error
func(B(c)); // casting to B first; works.

是否可以让 func(c) 进行编译?由于其他一些因素,我无法添加构造函数来直接从 C 构造 A:A::A(C&) 是不允许的。

最佳答案

在 VS2012 中编译:

class A { };
class B : public A { };
class C
{
public:
operator B() { return B(); } // User defined conversion.
// This is pseudo code just to satisfy the syntax.
};

void func(A a) { }

int _tmain(int argc, _TCHAR* argv[])
{

C c;
func(c);
func(B(c));
}

这与您的代码很接近。可能需要进行一些调整。

关于C++类型重载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35006410/

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