指向另一个对象的指针
Pointer tho another Object
我有一点问题.. 我想做汽车登记,我想有所有者(指向 Person 对象的指针(,但是当我想用 get 函数获取所有者时,我不能这样做......这对我来说很神秘...也许我在某处有一点错误,我找不到它.请帮忙:)
class Person
{
friend class Cars;
public:
Person(){}
Person(uint8_t age, string name) :m_age(age), m_name(name)
{
m_idGener = s_idGenerator++;
}
int getId()
{
return m_idGener;
}
uint8_t getAge()
{
return m_age;
}
string getName()
{
return m_name;
}
private:
string m_name;
uint8_t m_age;
static int s_idGenerator;
int m_idGener;
};
class Cars:public Person
{
public:
Person *m_owner; // this is my pointer which i want to point to cars Object
it will stay public for the test after the test i will move it in the private section
Cars()
{
}
// getters and setters
Cars setOwner(Cars &object, Person &owner) // with this function i set the owner
{
object.m_owner = &owner;
}
Cars getOwner(Cars &object) /// here is my problem i can't take the owner
{
return *(object.m_owner); // but i can't take the owner
}
uint16_t getHorsePower()
{
return horsePower;
}
string getRegNumber()
{
return registrationNumber;
}
private:
string m_manufacturerName;
string modelName;
uint16_t horsePower;
string registrationNumber;
};
int Person::s_idGenerator = 0;
你犯了更多的错误。至少应更正以下内容:
Cars setOwner(Cars &object, .....
此方法不返回值,因此它应为 void。car 对象应该是将为其调用方法的对象,而不是参数。
Cars getOwner(Cars &object) /// here is my problem i can't take the owner
{
return *(object.m_owner); // but i can't take the owner
}
在这种方法中,我将返回类型更改为 Person *
,然后简单地返回 m_owner
。不需要参数。
修改后的工作示例:
#include <string>
#include <iostream>
using namespace std;
class Person
{
friend class Cars;
public:
Person(){}
Person(uint8_t age, string name) :m_age(age), m_name(name)
{
m_idGener = s_idGenerator++;
}
int getId()
{
return m_idGener;
}
uint8_t getAge()
{
return m_age;
}
string getName()
{
return m_name;
}
private:
string m_name;
uint8_t m_age;
static int s_idGenerator;
int m_idGener;
};
class Cars:public Person
{
public:
Person *m_owner; // this is my pointer which i want to point to cars Object
// it will stay public for the test after the test i will move it in the private section
Cars()
{
}
// getters and setters
void setOwner(Person &owner) // with this function i set the owner
{
m_owner = &owner;
}
Person *getOwner() /// here is my problem i can't take the owner
{
return (m_owner); // but i can't take the owner
}
uint16_t getHorsePower()
{
return horsePower;
}
string getRegNumber()
{
return registrationNumber;
}
private:
string m_manufacturerName;
string modelName;
uint16_t horsePower;
string registrationNumber;
};
int Person::s_idGenerator = 0;
int main() {
Person p(5,"Bill");
Cars c;
c.setOwner(p);
cout << c.getOwner()->getName();
}
在这里:
Cars setOwner(Cars &object, Person &owner) // with this function i set the owner
{
object.m_owner = &owner;
}
您将值类型声明为"Cars",但不返回任何内容。
在这里:
Cars getOwner(Cars &object) /// here is my problem i can't take the owner
{
return *(object.m_owner); // but i can't take the owner
}
您想返回"Person"对象,但再次将值类型声明为"Cars"。
因此,您可以像这样更改此函数:
第一:
void setOwner(Cars &object, Person &owner);
第二:
Person getOwner(Cars &object);
相关文章:
- 如何将 c++ 类包装到 python 中,以便我可以使用 pybind11 访问其成员的公共方法(成员是一个对象指针)
- 如何将指针从unique_ptr传递到另一个对象并管理寿命
- 一个对象的两个指针.删除了一个指针,对象仍然存在
- 指针阵列在一个对象数组中函数
- 在类中创建指针到另一个对象
- 指向另一个对象的指针
- c++ 序列化包含字符串和指向另一个对象的指针的对象
- RValue 引用在将其绑定(非指针)对象分配给另一个指针后是否会删除该对象?
- 通过另一个对象C++的字段中的指针访问对象
- 将指针插件更改为另一个对象
- 包含另一个对象指针向量的对象
- 当通过其中一个指针删除对象时,C++将所有指针设置为null
- 销毁和重新创建一个对象会使指向该对象的所有指针无效吗
- C++如果我有一个对象指针,是在堆栈或堆上分配的方法变量
- 如何从一个对象的传递指针中读取变量
- 将QQuickItem指针的子类指定给另一个C++对象
- 当我们把指针从一个对象复制到同一类的另一个对象时,我们到底想要什么
- 我有一个对象数组,我想发出一个包含这些对象中的一个的信号。但信号不能是指针
- 将一个对象写入一个对象,该对象带有指向另一个对象的指针,指向 ASCII 文件 (C++)
- 分配给定指针的另一个对象