目前仍然的東西整個負載我不理解在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