C++ 我可以操作类中每个对象的相同元素吗?
e、 g: 而不是: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
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(至少不是静态成员变量没有涵盖的一个)从技术上讲,有一种方法,它速度慢、效率低,而且只有在创建运行时时才有用。该类的所有实例是否总是共享相同的值?那么静态成员变量可能就是您想要的。