gpt4 book ai didi

C++ 抽象类不能有带有该类参数的方法

转载 作者:IT老高 更新时间:2023-10-28 22:23:40 30 4
gpt4 key购买 nike

我创建了这个 .h 文件

#pragma once

namespace Core
{
class IComparableObject
{
public:
virtual int CompareTo(IComparableObject obj)=0;
};
}

但是编译器不喜欢 IComparableObject obj 参数如果方法是虚拟纯的,而

virtual int CompareTo(IComparableObject obj) {}

没关系,但我希望它是虚拟纯净的。我怎么能做到呢?有可能吗?

最佳答案

您正在尝试按值传递 obj。您不能按值传递抽象类实例,因为不能(直接)实例化任何抽象类。为了做你想做的事,你必须通过引用传递 obj,例如像这样:

virtual int CompareTo(IComparableObject const &obj)=0;

当您为 CompareTo 提供实现时,它会起作用,因为这样该类就不再是抽象的了。但请注意 slicing发生!您不想按值传递 obj

关于C++ 抽象类不能有带有该类参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4282014/

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