这是我得到的,但当我检查类型时,它显示" 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;
}
是否可以定义自己的变量类型,然后将其用作任何其他变量?
打印,分配新值..等等。
答案 0 :(得分:2)
The result of std::type_info::name()
is implementation-defined可能是任何东西,包括一个受损的名字,空字符串或烤宽面条的食谱。
例如,GCC gives:
9MyVarName
i
显然你的是采用类似C的方法并将其称为struct MyVarName
,这是你必须编写的以引用C中的类型。
根本不要依赖它来做这种事情。 C ++不会假装有意义的反射。
除此之外,您的代码没有任何问题。您 定义了一个新类型。有一些方法可以引入不需要创建类类型的新类型(即使用struct
或class
),但这些都涉及使用typedef
或{{对现有类型进行别名处理1}},因而受到限制。它们不允许您创建类似using
的复杂类型。
答案 1 :(得分:0)
在C:
typedef char newtype[20];
void foo(void)
{
newtype a;
}