首页 > 解决方案 > c ++如何为typedef类型制作构造函数

问题描述

在我的 c++ 项目中,我有一个名为 Expression

typedef std::function<uint64_t(uint64_t)> Expression;

我还有一个像构造函数一样的函数

Expression ExpressionConstructor(std::string Expr, MicroCodeDescriptor* descriptor) {
//implementation doesn't matter in this case
}

此代码有效,我可以像这样使用 Expression 类型:

Expression expr= ExpressionConstructor(code, descriptor);

但是有没有办法为 Expression 声明一个构造函数,它在语法上像构造函数而不是像一个单独的函数一样工作,我看不出有任何理由为什么这根本上是不可能的,因为构造函数只是具有它们构造的类的返回类型的函数.

标签: c++typedef

解决方案


Atypedef不是新类型,它只是创建一个别名,您Expression的仍然是 type std::function<uint64_t(uint64_t)>

我看不出这根本不可能的任何理由,因为构造函数只是具有它们构造的类的返回类型的函数。

这不是根本不可能的(从某种意义上说,规范不允许这样的事情),但是规范中没有给出这样的功能,所以你不能这样做。就像不可能向现有类型添加新成员函数一样。


推荐阅读