c++ - 是否可以创建没有结构的新类型变量?

标签 c++ c

这是我得到的,但是当我检查类型时它显示“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++ 不会假装具有有意义的反射。

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

关于c++ - 是否可以创建没有结构的新类型变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44945301/

相关文章:

c - 为什么这个例子在C中陷入了无限循环?

c - printf 函数产生意外的输出

c++ - 在 Lua/Binding 中使用 C++ 函数

c++ - 在哪里可以看到库包含 LLVM 的哪些部分?

c++ - C++中函数返回的值是右值吗?无法使用复制/move 构造函数初始化实例

c++ - 应用程序连接到数据库

iPhone Cocoa 混合模式数学基本错误

c++ - 在 C++ 中使用多个 getline 实例

c++ - memcpy -- 将 uint64 复制到 char *

从 argv 文件创建结构,并将内容打印到具有单独 header 的一个主文件中