键入Alias自定义类的对象

时间:2013-10-15 15:39:31

标签: c++ c++11

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

using Potion = Collectable("Potion");

然后我们有一个方法,如

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

我们可以通过药水而不是可收集(“药水”)

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

预计会打印出“药水”

显然我们可以创建一个名为potion的对象,即Collectable potion(//...),但我很想知道我们是否可以使用上面的方法创建临时对象,当我们不需要存储对象和/时或者保存一些打字

2 个答案:

答案 0 :(得分:5)

使用常量。

const Collectable Potion("Potion");

答案 1 :(得分:2)

也许这就是你要找的东西:

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

每次你打电话

print_collectable(Potion);

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