目前仍然的东西整个负载我不理解在C对象和类++,没有到目前为止,我已阅读使我更懂得它的任何和我一起慢慢拼凑信息从我设法完成的练习中。理解OOP协会和函数(C++)
很少要点: 当从一个类创建一个对象时,如何访问另一个类中的函数中的对象的名称?什么类型的变量是存储在对象中的名称?它创建后甚至存储在任何地方?
我的手册具有产生两个类之间的关联的例子;
Aggregationclass
{
public:
...
private:
Partclass* partobject_;
...
};
这实际上是什么意思? Aggregationclass可以访问partclass中的对象partobject?什么变量可以从partclass中通过聚合类读取?
这是我从我的C++面向对象introductionary类,是希望我利用级别之间的关联卡上的锻炼。 (7(2/2)/ 11)
它包括不可编辑的汽车类;
#include <iostream>
#include <string>
using namespace std;
class Car
{
public:
void Move(int km);
void PrintDrivenKm();
Car(string make, int driven_km);
private:
string make_;
int driven_km_;
};
Car::Car(string make, int driven_km) : make_(make), driven_km_(driven_km)
{
}
void Car::Move(int km)
{
driven_km_ = driven_km_ + km;
cout << "Wroom..." << km << " kilometers driven." << endl;
}
void Car::PrintDrivenKm()
{
cout << make_ << " car has been driven for" << driven_km_ << " km" << endl;
}
我取得了迄今为止(Person类);我在本节的评论中写了大部分的问题。
class Person //how do I associate Person class with Car class in a way that makes sense?
{
public:
void ChangeCar(string);
Person(string, string);
int DriveCar(int);
private:
Car* make_;
Car* driven_km_;
string name_;
};
Person::Person(string name, string make) //How do I ensure string make == object created from class Car with same name?
{
Person::name_ = name;
Car::make_ = make_;
}
int Person::DriveCar(int x) //Is this the correct way to use a function from another class?
{
Car::Move(x);
}
void Person::ChangeCar(string y) //this function is wrong, how do I create a function that calls for object from another class with the parameter presented in the call for this function (eg. class1 object(ferrari) = class1 object holds the values of object ferrari from class2?)?
{
Car::make_ = y;
}
和一个不可编辑的main();
int main()
{
Car* dx = new Car("Toyota corolla DX", 25000);
Car* ferrari = new Car("Ferrari f50", 1500);
Person* driver = new Person("James", dx);
dx->PrintDrivenKm();
driver->DriveCar(1000);
dx->PrintDrivenKm();
ferrari->PrintDrivenKm();
driver->ChangeCar(ferrari);
driver->DriveCar(20000);
ferrari->PrintDrivenKm();
return 0;
}
免责声明:运动已经从译成另一种语言,在发现我没有注意到一个翻译错误的情况下,请不要发出通知,我会尽我所能来解决。
成品锻炼;谢谢你,博士爱好者花时间回复你,我可以自信地说,我学到了很多东西!
class Person
{
public:
void ChangeCar(Car * y);
Person(String name, Car * Car);
int DriveCar(int);
private:
Car * Car_;
int x;
string name_;
string y;
};
Person::Person(string name, Car * Car) : name_(name), Car_(Car)
{
Person::name_ = name;
}
int Person::DriveCar(int x)
{
Car_->Move(x);
}
void Person::ChangeCar(Car * y)
{
Car_ = y;
}
我想你遇到的麻烦是理解“指针”。试着找到更多关于这方面的信息,我认为事情会变得更加清晰:-) – AndyG
太多的问题。请给每个stackoverflow.com问题一个问题。 –
更好的是:尽量避免指针,除非你真的需要它们。例如,'Car'类不需要使用指针就可以聚合一个'string'和一个'int'。 – chtz