标签: member-variables

更改函数中成员变量的值 - C++

我正在为我正在编写的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)

c++ parameter-passing member-variables

1
推荐指数
1
解决办法
3905
查看次数

复制一个对象并使两者共享一个成员变量(C++)

我一直在思考和搜索这个,但我无法解决这个问题.我想要一个对象,当复制到另一个对象时,两个对象共享某个成员变量.因此,当我更改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)

我知道复制构造函数,但我不确定它是否适用于此处或者有更好的方法.我一直在考虑使用指针或引用,但不能成功.请注意,我不希望所有对象共享同一个变量.

c++ class copy-constructor member-variables

1
推荐指数
1
解决办法
92
查看次数

基于不同字段的对象向量的排序函数

我有一个对象向量:

struct Student{   
  string name;   
  string id;   
  string major;
  int age;
};

vector<Student> s;
Run Code Online (Sandbox Code Playgroud)

有没有办法编写一个通用(可能是模板)函数来根据不同的字段对这个向量(或数组)进行排序,而不是编写四个不同的函数?

c++ struct function vector member-variables

1
推荐指数
1
解决办法
55
查看次数

为什么在类中声明为对象的成员变量的地址值总是变化?在 C++

我正在研究 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++ class clang member-variables clang++

1
推荐指数
1
解决办法
65
查看次数

Memeber 变量作为 C++ 中的类变量是如何发生的?


我有个问题。我目前正在用 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)

c++ reference class class-variables member-variables

0
推荐指数
1
解决办法
33
查看次数