使用typedef自定义内置类型



我正在用c++编写一个模糊逻辑头,并尝试做以下操作。

typedef float fuzzy;
fuzzy operator !();

编译器有这个说。

error: ‘fuzzy operator!()’ must have an argument of class or enumerated type

我知道我可以写一个类来处理这个问题(可能比问这个问题要快得多),但这似乎有点小题大做,因为这样的类实际上只有一个数据成员,只有构造函数和赋值成员函数。所有这些都是多余的,因为只有一个数据成员,它将被处理,好像它是一个浮点数。其他操作符可能被实现为非成员函数。因此,除了自定义的逻辑和位操作符之外,该类本质上是一个浮点数。

是否有可能使用typedef来创建内置的自定义版本(一种伪类)?从我所能找到的,类型定义主要用于减少程序员在某些环境定义/处理其类型不同的情况下可能不得不更改类型的位置。

也许我疯了,但这似乎是使用typedef最合乎逻辑和最理想的方式之一。这是不是个坏主意,或者根本不可能?

using fuzzy = float;一样,typedef不引入新的类型,而是引入别名。

因此,fuzzyfloat是相同的类型,并且不能重载内置类型的操作符。

因此,无论出于何种原因,如果需要为fuzzy重载操作符,它必须是一个类或结构体:

struct fuzzy {
    float data_;
    // Put constructors here
    // Put conversion to float here if desired
};
然后你可以定义自己的操作符,如:
std::ostream& operator << (std::ostream& os, const fuzzy& f) {
    os << "Hello from fuzzy!n" << f.data_;
    return os;
}

相关内容

最新更新