【发布时间】:2021-02-04 14:05:05
【问题描述】:
所以,正如您可能已经想象的那样,我正在尝试在 C++ 中使用通配符。但首先,让我举一个例子来说明我的意思:
假设我们有一个 Human 类和一个 Pocket 类。 Pocket 类有一个任意的其他类作为类型参数。为了更好地可视化这一点,让我们编写一些代码(在 Java 中:)
人类.java:
package de.budschie.human_pocket_example;
import java.util.ArrayList;
public class Human
{
ArrayList<Pocket<?>> inventory = new ArrayList<>();
}
Pocket.java:
package de.budschie.human_pocket_example;
public class Pocket<E>
{
E pocketElement;
int amount;
public Pocket(E pocketElement, int amount)
{
this.pocketElement = pocketElement;
this.amount = amount;
}
public E getPocketElement()
{
return pocketElement;
}
public int getAmount() {
return amount;
}
}
如您所见,我可以存储口袋,而不管它们的类型参数如何。我可以创建一个包含一个包含整数的口袋和另一个包含浮点数的口袋,两者都可以放入库存中。所以,我的问题是:
我将如何在 C++ 中做到这一点?
我已经尝试使用问号,但这似乎不起作用。我不能只说,我想要一个 std::vector
我希望这不是 StackOverflow 的主题,如果是,请在cmets,我会尽快删除这个问题。
【问题讨论】:
-
你能展示你的 c++ 代码吗?什么不适合你?你是如何尝试使用它的?
template <typename T> void foo(std::vector<Pocket<T>> vec) {}可以支持任意Pocket<T>。 -
我建议选择a good C++ book。您想要做的将在那里解释为“模板”。