我正在为我正在编写的GBA游戏进行一些碰撞检测和处理,我遇到了将处理部分放入函数的问题.我正在尝试更改成员变量的值(在本例中Player.global_x),但是将对象传递给函数不允许这样做.相关代码如下:
main.cpp中
bool CheckCollision(sprite obj1, sprite obj2){
int obj1_top = obj1.global_y;
int obj1_bottom = obj1.global_y + (obj1.height-1);
int obj1_left = obj1.global_x;
int obj1_right = obj1.global_x + (obj1.width-1);
int obj2_top = obj2.global_y;
int obj2_bottom = obj2.global_y + (obj2.height-1);
int obj2_left = obj2.global_x;
int obj2_right = obj2.global_x + (obj2.width-1);
if(obj1_right < obj2_left){ // if obj1 is left of obj2
return false;
}
if(obj1_left > obj2_right){ // if obj1 is right of obj2
return false;
}
if(obj1_bottom < obj2_top){ // if …Run Code Online (Sandbox Code Playgroud) 我一直在思考和搜索这个,但我无法解决这个问题.我想要一个对象,当复制到另一个对象时,两个对象共享某个成员变量.因此,当我更改object1的成员变量的值时,它也会更改object2中的变量.例:
class ABC {
public:
int a = 5;
//...
}
int main() {
ABC object1;
ABC object2 = object1;
object2.a = 7; // now, object1.a is equal to 7
object1.a = 10; // now, object2.a is equal to 10
}
Run Code Online (Sandbox Code Playgroud)
我知道复制构造函数,但我不确定它是否适用于此处或者有更好的方法.我一直在考虑使用指针或引用,但不能成功.请注意,我不希望所有对象共享同一个变量.
我有一个对象向量:
struct Student{
string name;
string id;
string major;
int age;
};
vector<Student> s;
Run Code Online (Sandbox Code Playgroud)
有没有办法编写一个通用(可能是模板)函数来根据不同的字段对这个向量(或数组)进行排序,而不是编写四个不同的函数?
我正在研究 C++ 类。我正在编写一个名为 User 的类。成员变量被声明为类中的对象。返回此对象地址的函数是 getAddr()。为了您的信息,getAddr() 函数也存在于 User 类中。
我在打印用户对象和用户对象中的人物对象的地址值时发现了一些奇怪的东西。发现每次调用getAddr()都会改变User对象中Person对象的地址值。
我写的代码如下。
#include <iostream>
#include <sstream>
class Person {
private:
int num;
public:
Person(){};
std::string getAddr() {
std::stringstream ss;
ss << this;
return (ss.str());
}
};
class User {
private:
Person _person;
Person *_ptr_person;
public:
User() {
this->_ptr_person = new Person();
this->_person = Person();
}
std::string getAddr() {
std::stringstream ss;
ss << this;
return (ss.str());
}
Person *getPtrPerson() {
return this->_ptr_person;
}
Person getPerson() {
return this->_person;
}
~User() {
delete …Run Code Online (Sandbox Code Playgroud)
我有个问题。我目前正在用 C++ 编写一个小例子,无法弄清楚解释。这是我的问题:
#include <iostream>
using namespace std;
class X{
int& i ; /* int i; */
public :
X(int k=100):i(k){ }
X(`const` X& x):i(x.i){}
void setI(int k){i=k;}
int getI(){cout <<"adresse: "<< &i << " Contenue: "<<i<<endl ; return i;}
};
int main(){
int i =7;
X a(i);
a.getI();
a.setI(5);
a.getI();
cout << "the value of i is: " << i << endl;
X b(a);
b.getI();
cout << "the value of i is: " << i << endl;
X c; …Run Code Online (Sandbox Code Playgroud)