Typedef到C ++中的周围类型

匿名

有没有一种方法可以typedef在声明的(环绕的)类型本身内部构建类型声明,而无需说明类型名称?

例子:

class X
{
  public:
    typedef <fill in magic here> MyType;
  //...
};

背景:乍看之下,这似乎很愚蠢。我需要这样做,因为我使用宏构建了数据类的编译时反射。因此,在数据类的声明中插入了一个宏,该宏需要处理它所插入的类型。到目前为止,我发现了适用于MSVC和g ++的可行解决方案,它们都依赖于我认为的实现缺陷。因此,它们可能不适用于较新的版本。Clang不会“吃”这两种解决方案。

我当前的MSVC解决方案定义了一个方法,然后仅通过其名称获取其地址,然后调用一个小助手来“返回”其类的类型。(Clang和g ++期望该方法的全名,包括其类名)。

我当前的g ++解决方案定义了带有返回类型的静态方法std::remove_reference(decltype(*this))(Clang和MSVC不允许this在静态上下文中使用)。

我绝对希望使用标准的标准解决方案,但目前对clang的特殊解决方案也可以。

如果没有任何效果,我必须将类的名称传递给宏,但是我尽量避免这样做,因为我已经有很多使用宏的代码了。

编辑:添加有关反射如何工作的示例(这可能澄清了我的需要):

class X : public Y
{
  public:
    //.. constructor and such stuff...

    int a;
    double b;
    std::string c;

    CLASSHEAD(Y)
      FIELD(a)
      FIELD(b)
      FIELD(c)
    CLASSFOOT
};

CLASSHEAD是应该定义的宏typedef这是一个VAR_ARGS宏,其中参数接收基类。如前所述:可以给它类的名称作为第一个参数(CLASSHEAD(X, Y)在示例中产生)。但是我几乎无法想象,对于定义周围类型的“简单”任务没有解决方案……

毫米毫米毫米毫米

Nohting有效,因此在宏中使用类Name是唯一可行的解​​决方案

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C ++中从头文件到源文件中实现typedef函数

来自分类Dev

typedef 到原始类型的前向声明

来自分类Dev

Java中的C ++ typedef?

来自分类Dev

C ++中复杂的Typedef

来自分类Dev

了解c中的typedef

来自分类Dev

C中具有typedef结构的未知类型名称

来自分类Dev

在C中获取typedef的名称?

来自分类Dev

从C中的typedef减去值?

来自分类Dev

C中的typedef结构继承

来自分类Dev

C 中的 typedef struct AA

来自分类Dev

用c ++ typedef /类型替换枚举类

来自分类Dev

C ++如何使Typedef类型的构造函数

来自分类Dev

用C ++ typedef /类型替换枚举类

来自分类Dev

Typedef指向C ++中C函数的指针

来自分类常见问题

如何在C ++中制作条件typedef

来自分类Dev

Typedef名称与C ++中的struct标记冲突

来自分类Dev

C:typedef结构中的函数指针

来自分类Dev

typedef中C样式数组的尺寸

来自分类Dev

C程序中的typedef结构错误

来自分类Dev

C中的同义`typedef`是否可以互换?

来自分类Dev

在C中重新声明typedef

来自分类Dev

C中的typedef,DLLEXPORT,__ stdcall帮助

来自分类Dev

C中的typedef结构的malloc sizeof

来自分类Dev

对C ++中的类内的typedef函数的怀疑

来自分类Dev

C中的结构,typedef和指针

来自分类Dev

使用typedef的struct中的C枚举定义

来自分类Dev

C程序中的typedef结构错误

来自分类Dev

与C ++中的typedef变量进行对话

来自分类Dev

typedef和在c ++ 11中使用