1

是否可以为类的对象键入别名,例如

using Potion = Collectable("Potion");

那么如果我们有一个方法,比如

void print_collectable(const Collectable& item)
{
    // print stuff from collectable i.e.
    std::cout << item.get_name() << std::endl;
}

我们可以传递 Potion 而不是 Collectable("Potion")

print_collectable(Potion) vs print_collectable(Collectable("Potion"))

这将被预期然后打印“药水”

显然我们可以创建一个名为 potion ie 的对象Collectable potion(//...),但我很想知道我们是否可以使用上面的方法来创建临时对象,这在我们不需要以其他方式存储对象和/或保存一些输入时会很有帮助

4

2 回答 2

5

使用常数。

const Collectable Potion("Potion");
于 2013-10-15T15:42:39.623 回答
2

也许这就是你正在寻找的:

struct {
   operator Collectable() const { return Collectable("Potion"); }
} Potion;

每次打电话到哪里

print_collectable(Potion);

它将创建一个临时对象Collectable("Potion")并将其传递给print_collectable.

于 2013-10-15T15:50:22.017 回答