C++ 我可以操作类中每个对象的相同元素吗?

C++ 我可以操作类中每个对象的相同元素吗?,c++,C++,e、 g: 而不是: int main() { class exampleClass{ public: int x; }; exampleClass one; exampleClass two; exampleClass three; if (exampleClass manipulate_all x == 5) { // do something

e、 g:

而不是:

 int main()
    {
       class exampleClass{
       public:
        int x;
                    };

    exampleClass one;
    exampleClass two;
    exampleClass three;

    if (exampleClass manipulate_all x == 5)
    {
      // do something
    }

    return 0;
    }
}
<非常新的C++,所以如果这是一个愚蠢的问题,或者如果这对于初学者来说太高级了,那么道歉。< /P>
我正在尝试为我的游戏创建一个碰撞系统,其中每个精灵都有一个类对象,因此我可以对照每个其他精灵检查玩家对象。如果这是一个糟糕的想法,请告诉我。

如果您的成员是静态成员,您可以这样做,但如果它是实例成员,则不能这样做,就像您的案例一样。但是您还需要初始化类外的静态成员

int main()
{
   class exampleClass{
   public:
    int x;
                };

exampleClass one;
exampleClass two;
exampleClass three;

if (one.x == 5)||(two.x == 5)||(three.x == 5)
{
  // do something
}

return 0;
}
#包括
类示例类
{
公众:
静态int x;
};
int exampleClass::x=0;
int main()
{
例如一班;
例如二班;
例如三班;
exampleClass::x=5;

std::cout如果您的成员是静态成员,则可以,但如果它是实例成员,则不能,如您的案例。但您还需要在类外初始化静态成员

int main()
{
   class exampleClass{
   public:
    int x;
                };

exampleClass one;
exampleClass two;
exampleClass three;

if (one.x == 5)||(two.x == 5)||(three.x == 5)
{
  // do something
}

return 0;
}
#包括
类示例类
{
公众:
静态int x;
};
int exampleClass::x=0;
int main()
{
例如一班;
例如二班;
例如三班;
exampleClass::x=5;

如果希望所有成员共享一个变量,可以使用

如果它们是碰撞系统的一部分,您可能需要一个更大的结构来容纳所有变量,并且只需在其上使用一个循环即可

或者,您可以将一个静态变量作为一个列表来跟踪类的所有其他成员,并在此循环,其中静态变量是指向实例化对象的指针向量。这需要单个类及其自己的函数修改所有值的更多开销

无论哪种方式,您都必须编写容器来保存所有值,但如何设计它取决于您

修改您的类:

#include<iostream>

class exampleClass
{
    public:
    static int x;
};

int exampleClass::x = 0;


int main()
{
    exampleClass one;
    exampleClass two;
    exampleClass three;

    exampleClass::x = 5;

    std::cout << one.x << two.x << three.x << std::endl;

    return 0;
}
类示例类{
私人:
静态向量实例;
公众:
exampleClass(){instances.push_back(this);}
~exampleClass(){/*使用某种id在此处的列表中查找并删除当前实例。*/}
int x;
};

如果希望所有成员共享一个变量,可以使用

如果它们是碰撞系统的一部分,您可能需要一个更大的结构来容纳所有变量,并且只需在其上使用一个循环即可

或者,您可以将一个静态变量作为一个列表来跟踪类的所有其他成员,并在此循环,其中静态变量是指向实例化对象的指针向量。这需要单个类及其自己的函数修改所有值的更多开销

无论哪种方式,您都必须编写容器来保存所有值,但如何设计它取决于您

修改您的类:

#include<iostream>

class exampleClass
{
    public:
    static int x;
};

int exampleClass::x = 0;


int main()
{
    exampleClass one;
    exampleClass two;
    exampleClass three;

    exampleClass::x = 5;

    std::cout << one.x << two.x << three.x << std::endl;

    return 0;
}
类示例类{
私人:
静态向量实例;
公众:
exampleClass(){instances.push_back(this);}
~exampleClass(){/*使用某种id在此处的列表中查找并删除当前实例。*/}
int x;
};

简短回答:Noughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh从技术上讲,有一种方法,它速度慢、效率低,而且只有在创建运行时时才有用。该类的所有实例是否都应该共享相同的值?那么一个静态成员变量可能就是您想要的。简短回答:Noughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh(至少不是静态成员变量没有涵盖的一个)从技术上讲,有一种方法,它速度慢、效率低,而且只有在创建运行时时才有用。该类的所有实例是否总是共享相同的值?那么静态成员变量可能就是您想要的。