gpt4 book ai didi

java - Java 的 instanceof 的 C++ 版本是什么? : checking, 未转换

转载 作者:行者123 更新时间:2023-11-30 03:35:41 24 4
gpt4 key购买 nike

<分区>

我目前正在进行一个学校项目,我必须在其中将 Java 程序“翻译”成 C++。

该程序模拟媒体库并使用继承。基本上,您有一个可以向其中添加项目的媒体库。您可以添加的不同类型的项目是书籍、电影和音乐专辑。

我有一个类库,它主要创建一个实例,并且有一个容器来容纳我的所有项目。 Item 是父类(super class),Book、Movie 和 MusicAlbum 是它的派生类。

这是我在从 Java 转换为 C++ 时遇到问题的地方:

我的导师提供了“Main.cpp”,我必须以此为基础编写程序的其余部分。我不允许修改它或分配无效。但是,“Main.cpp”调用

cout << item << endl;

每次它向媒体库添加一个项目。因此,这当然会将它发送到 Item.cpp ,我已经在其中覆盖了 << 运算符。

现在,在编写用于输出其数据的代码之前,我必须能够弄清楚该“项目”是书籍、电影还是 MusicAlbum,因为这些东西中的每一个都需要以不同的方式打印。

在我的 Java 程序中,我写了类似这样的东西:

if(item instanceof Book){
System.out.println((Book) item); // I overrode "toString" in Book.Java
}
elseif(item instanceof Movie){
System.out.println((Movie) item); // overwrode "toString" in Movie.java
}
else
{
System.out.println((MusicAlbum) item; // overrode "toString" in MusicAlbum.java

如您所见,我使用 instanceof 来确定它是哪种类型的项目,然后在覆盖派生类的所有“toString”方法之后,将项目转换为该派生类型,然后将其传递给 println。

我不知道如何在 C++ 中执行此操作。我在 stackoverflow 和其他论坛上查看了大量类似的问题,他们要么建议我尝试过但没有用的东西,要么告诉你如何将项目转换为派生类型,而不是如何 -check - 它是哪个派生类型而不首先实际更改它。

如果有人知道这在 C++ 中是如何工作的,我将不胜感激。谢谢。

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