为什么包含在不同部分中定义的“ typedef”的类会导致错误?

Vogel_guo

我在类定义中使用“ typedef”,但是当此类发生在不同的位置时,它的执行方式将有所不同,并可能导致错误。请帮助我检查以下代码。

此版本的代码可能会导致错误:

#include <vector>
#include <string>
class B;
class A 
{
    public: 
        A() { }
        std::vector<B::size_type> vec;
};
class B
{
    public: 
        typedef std::vector<std::string>::size_type size_type; // [Error] incomplete type 'B' used in nested name specifier
};

但是以下代码正常运行:

#include <vector>
#include <string>
class B
{
    public: 
        typedef std::vector<std::string>::size_type size_type;
};
class A 
{
    public: 
        A() { }
        std::vector<B::size_type> vec;
};
基里尔·基洛夫(Kirill Kirov)

问题不在typedef于其本身,而在于定义的顺序。

在第一个代码段中,编译器不知道这是什么B::size_type-它只知道aclass B存在。在后一种情况下,编译器已经知道您的typedef,因此B::size_type

发生这种情况是因为编译器逐行“读取”(解析)代码并且定义的顺序很重要。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

模板化类中的typedef导致C ++错误

来自分类Dev

在水晶模块中定义类变量会导致错误

来自分类Dev

为什么“ ls> ls.out”会导致“ ls.out”包含在名称列表中?

来自分类Dev

在python类中包装ctypes结构会导致内存错误

来自分类Dev

C ++ Linux:在类中声明数组会导致分段错误

来自分类Dev

为什么会导致错误?

来自分类Dev

为什么在C ++中调用此虚拟函数会导致基类出现“缺少符号”错误?

来自分类Dev

什么会导致文件不包含在.deb中?

来自分类Dev

为什么更改类的属性会导致不同的结果?

来自分类Dev

为什么从类派生会导致有关父构造函数的错误?

来自分类Dev

为什么我的类对象会导致未声明的标识符错误?

来自分类Dev

为什么在Spark Shell中使用自定义案例类会导致序列化错误?

来自分类Dev

定义对象何时包含在类中

来自分类Dev

当typedef是全局的而不是局部的时,为什么定义与函数同名的typedef会产生错误?

来自分类Dev

为什么在关闭应用程序时释放类析构函数中的成员组件会导致EInvalidPointer错误?

来自分类Dev

为什么矢量会导致细分错误?

来自分类Dev

为什么这个条件会导致错误?

来自分类Dev

为包含的方法调用super会导致“没有超类方法”错误-ActiveSupport

来自分类Dev

JOOQ 3.1生成的文件名与类名不同会导致编译错误

来自分类Dev

使用QDataStream序列化自定义类会导致C2679错误

来自分类Dev

使用 std::sort() 对自定义类的 Vector 进行排序会导致分段错误

来自分类Dev

在类中分配函数指针会导致C ++中的值类型错误

来自分类Dev

将类传递给打字稿中的构造函数会导致错误

来自分类Dev

为什么在JavaScript中10 === 010会导致错误

来自分类Dev

为什么嵌套XPATH条件中的函数会导致错误?

来自分类Dev

为什么strlen会导致C中的分段错误?

来自分类Dev

为什么使用后在单独的特征中定义的隐式会导致编译错误?

来自分类Dev

在特定类的方法中调用另一个类的属性会导致溢出错误。

来自分类Dev

什么会导致Sprockets :: CachedEnvironment错误?

Related 相关文章

  1. 1

    模板化类中的typedef导致C ++错误

  2. 2

    在水晶模块中定义类变量会导致错误

  3. 3

    为什么“ ls> ls.out”会导致“ ls.out”包含在名称列表中?

  4. 4

    在python类中包装ctypes结构会导致内存错误

  5. 5

    C ++ Linux:在类中声明数组会导致分段错误

  6. 6

    为什么会导致错误?

  7. 7

    为什么在C ++中调用此虚拟函数会导致基类出现“缺少符号”错误?

  8. 8

    什么会导致文件不包含在.deb中?

  9. 9

    为什么更改类的属性会导致不同的结果?

  10. 10

    为什么从类派生会导致有关父构造函数的错误?

  11. 11

    为什么我的类对象会导致未声明的标识符错误?

  12. 12

    为什么在Spark Shell中使用自定义案例类会导致序列化错误?

  13. 13

    定义对象何时包含在类中

  14. 14

    当typedef是全局的而不是局部的时,为什么定义与函数同名的typedef会产生错误?

  15. 15

    为什么在关闭应用程序时释放类析构函数中的成员组件会导致EInvalidPointer错误?

  16. 16

    为什么矢量会导致细分错误?

  17. 17

    为什么这个条件会导致错误?

  18. 18

    为包含的方法调用super会导致“没有超类方法”错误-ActiveSupport

  19. 19

    JOOQ 3.1生成的文件名与类名不同会导致编译错误

  20. 20

    使用QDataStream序列化自定义类会导致C2679错误

  21. 21

    使用 std::sort() 对自定义类的 Vector 进行排序会导致分段错误

  22. 22

    在类中分配函数指针会导致C ++中的值类型错误

  23. 23

    将类传递给打字稿中的构造函数会导致错误

  24. 24

    为什么在JavaScript中10 === 010会导致错误

  25. 25

    为什么嵌套XPATH条件中的函数会导致错误?

  26. 26

    为什么strlen会导致C中的分段错误?

  27. 27

    为什么使用后在单独的特征中定义的隐式会导致编译错误?

  28. 28

    在特定类的方法中调用另一个类的属性会导致溢出错误。

  29. 29

    什么会导致Sprockets :: CachedEnvironment错误?

热门标签

归档