是否可以在没有结构的情况下创建新的类型变量?

Is it possible to create new type variable without struct?

本文关键字:情况下 创建 类型变量 结构 是否      更新时间:2023-10-16

这是我得到的,但是当我检查类型时,它显示"struct MyVarName"

#include <iostream>
#include <typeinfo>
typedef struct { char text[15];} MyVarName;
int  g = 0;
int main(void) {
MyVarName a = { "super" };
std::cout << typeid(a).name() << 'n';
std::cout << typeid(g).name() << 'n';
return 0;
}

是否可以定义自己的变量类型,然后将其用作任何其他变量?

打印,分配新值等。

std::type_info::name()的结果是实现定义的,可以是任何内容,包括损坏的名称、空字符串或千层面的配方。

例如,海湾合作委员会提供:

9MyVarName
i

显然,您的方法正在采用类似 C 的方法并将其称为struct MyVarName,这是您必须编写以引用 C 中的类型的内容。

只是不要依赖它来做这种事情。C++不会假装有有意义的反思

除此之外,您的代码没有任何问题。您确实定义了一个新类型。有一些方法可以引入不需要创建类类型的新类型(即使用structclass(,但这些方法都涉及用typedefusing对现有类型进行别名,因此受到限制。它们不允许您创建像std::string这样的复杂类型。

在 C 中:

typedef char newtype[20];
void foo(void)
{
newtype a;
}