为什么静态向量在不同的类中似乎具有不同的内容?

拉胡尔·艾耶(Rahul Iyer)

我有以下代码:

namespace GameStatus{

    static std::vector<SavePoint>savePoints;
}

ASavePoint是:

class SavePoint{

public:
    int distance;
    int score;

    SavePoint(int d,int s){
        distance = d;
        score = s;
    };
};

问题是,即使GameStatus::savePointsstatic,向量也似乎包含元素或不包含元素,这取决于调用方是谁。

例如,如果我有一个添加保存点的类:

class Game{

    void addSavePoint(){
        SavePoint savepoint(12,10);
        GameStatus::savePoints.push_back(savepoint);
    }

    void testView(){
       if(!GameStatus::savePoints.empty()){
          Log("There is a save point"); // Can see that savePoints is not empty in the debugger. Everything looks ok here.
       }
    }

}

但是,如果我还有其他课程:

class Foo{
    void something(){
         if(GameStatus::savePoints.empty()){  // In this class it appears that the vector is empty.
              //..do something.
         }
    }
}

我有一个游戏循环,该循环在Game和Foo中交替执行代码,似乎其中Game GameStatus::savePoints有一个savePoint(不为空),而在Foo中则没有(显示为空)。对我而言,这savePoints没有意义的,因为它是静态的。因此,这两个类都应访问相同的对象。

GameStatus::savePoints如果不同的类,为什么看起来具有不同的值?

z

static 关键字在C ++中有两个含义。

解决方案:应该将声明放在带有extern存储说明符而不是的标头static,因为您希望它是全局的。之后,您应该将定义放到一个.cpp文件中,该文件是一个编译单元/对象。这样,您将拥有向量的一个实例,可从包括头文件在内的所有其他编译单元访问该向量。

头文件:

namespace GameStatus{
    extern std::vector<SavePoint> savePoints;
}

cpp文件:

    std::vector<SavePoint> GameStatus::savePoints;

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有什么方法可以将具有不同模板参数的模板类实例放入向量中?

来自分类Dev

为什么OOP中的静态类的最佳实践会有所不同?

来自分类Dev

为什么此Python类具有不同的地址?

来自分类Dev

为什么GeneratorExit和StopIteration具有不同的基类?

来自分类Dev

为什么指向类对象的指针的静态向量具有垃圾值?

来自分类Dev

为什么具有true值的enable_if似乎与直接将void放入不同?

来自分类Dev

为什么C ++中的“ \ t”具有不同的宽度?

来自分类Dev

为什么不同的swift类中的函数没有被调用?

来自分类Dev

为什么列表具有不同的价值?

来自分类Dev

为什么在向量中对类成员的引用指向不同对象的相同值?

来自分类Dev

当我使用javascript登录时,为什么类和函数中的函数具有不同的表达式?

来自分类Java

为什么在静态方法和类中同步得到不同的Java字节码

来自分类Dev

具有相同静态功能和不同功能的更多类

来自分类Dev

为什么不同的设备具有不同的wifi接收范围?

来自分类Dev

为什么不同整数大小的数组具有不同的性能?

来自分类Dev

为什么两个不同查询的结果在phpMyadmin中具有不同的UI?

来自分类Dev

为什么这些重复的SD卡的内容具有不同的sha1sum?

来自分类Dev

如何从具有不同ID的重复父类中获取所有文本内容?

来自分类Dev

在C ++ 20中,为什么有std :: vector运算符==不适用于具有不同分配器的向量?

来自分类Dev

创建具有不同结构的向量的通常方法是什么?

来自分类Dev

为什么同一类的两个实例具有不同的属性(Python)明智?

来自分类Java

为什么不让gradle覆盖具有不同Android风格的Java类?

来自分类Dev

为什么不允许使用具有不同数量的模板参数的类/结构声明?

来自分类Dev

为什么Java中的本地类不能具有静态方法?

来自分类Dev

当类在函数内时,为什么类中的全局行为会有所不同?

来自分类Dev

剃刀类库(RCL)中具有静态内容的404

来自分类Dev

具有相同运行时类但静态类型不同的对象的不同性能

来自分类Dev

在 R 中迭代运行具有不同大小向量的函数

来自分类Dev

r 中具有不同长度的逻辑向量的引用

Related 相关文章

  1. 1

    有什么方法可以将具有不同模板参数的模板类实例放入向量中?

  2. 2

    为什么OOP中的静态类的最佳实践会有所不同?

  3. 3

    为什么此Python类具有不同的地址?

  4. 4

    为什么GeneratorExit和StopIteration具有不同的基类?

  5. 5

    为什么指向类对象的指针的静态向量具有垃圾值?

  6. 6

    为什么具有true值的enable_if似乎与直接将void放入不同?

  7. 7

    为什么C ++中的“ \ t”具有不同的宽度?

  8. 8

    为什么不同的swift类中的函数没有被调用?

  9. 9

    为什么列表具有不同的价值?

  10. 10

    为什么在向量中对类成员的引用指向不同对象的相同值?

  11. 11

    当我使用javascript登录时,为什么类和函数中的函数具有不同的表达式?

  12. 12

    为什么在静态方法和类中同步得到不同的Java字节码

  13. 13

    具有相同静态功能和不同功能的更多类

  14. 14

    为什么不同的设备具有不同的wifi接收范围?

  15. 15

    为什么不同整数大小的数组具有不同的性能?

  16. 16

    为什么两个不同查询的结果在phpMyadmin中具有不同的UI?

  17. 17

    为什么这些重复的SD卡的内容具有不同的sha1sum?

  18. 18

    如何从具有不同ID的重复父类中获取所有文本内容?

  19. 19

    在C ++ 20中,为什么有std :: vector运算符==不适用于具有不同分配器的向量?

  20. 20

    创建具有不同结构的向量的通常方法是什么?

  21. 21

    为什么同一类的两个实例具有不同的属性(Python)明智?

  22. 22

    为什么不让gradle覆盖具有不同Android风格的Java类?

  23. 23

    为什么不允许使用具有不同数量的模板参数的类/结构声明?

  24. 24

    为什么Java中的本地类不能具有静态方法?

  25. 25

    当类在函数内时,为什么类中的全局行为会有所不同?

  26. 26

    剃刀类库(RCL)中具有静态内容的404

  27. 27

    具有相同运行时类但静态类型不同的对象的不同性能

  28. 28

    在 R 中迭代运行具有不同大小向量的函数

  29. 29

    r 中具有不同长度的逻辑向量的引用

热门标签

归档