如何在c++中定义默认类型转换操作符

How to define a default typecast operator in C++

本文关键字:默认 类型转换 操作符 定义 c++      更新时间:2023-10-16

我为几个类型重载了类型转换操作符。现在我想为所有其他类型转换调用特定的函数。我该怎么做呢?

明显但恼人的问题。

  1. operator T()中缺少typename

    template <T>
    operator T();
    

    必须是

    template <typename T>
    operator T();
    
  2. 访问问题。

    class Foo改为struct Foo或将函数改为public

  3. 类定义末尾缺少;

主要问题是不能专门化成员函数模板。但是,您可以重载它们,效果相同。

struct Foo {
    template <typename T>
    operator T();
    operator int();
    operator char();
};