这是我得到的,但是当我检查类型时它显示“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;
}
是否可以定义自己的变量类型,然后将其用作任何其他变量?
打印、分配新值......等等
最佳答案
The result of std::type_info::name()
is implementation-defined可以是任何东西,包括损坏的名称、空字符串或烤宽面条的食谱。
例如,GCC gives :
9MyVarName
i
显然,您采用了类似 C 的方法并将其称为 struct MyVarName
,这是您必须编写的内容来引用 C 中的类型。
干脆不要依赖它来做这种事情。 C++ 不会假装具有有意义的反射。
除此之外,您的代码没有任何问题。您确实定义了一个新类型。有多种方法可以引入不需要创建类类型的新类型(即使用 struct
或 class
),但这些都涉及使用 对现有类型进行别名>typedef
或 using
,因此受到限制。它们不允许您创建像 std::string
这样的复杂类型。
关于c++ - 是否可以创建没有结构的新类型变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44945301/