0

我将对象作为指针传递,然后我想使用传递的对象值将它们分配给其他方法。

这就是我传递对象的方式:

Author *pAuthor = new Author("John", "Doe");
Publisher *pPublisher = new Publisher("Wrox", "10475 Crosspoint Blvd.", "Indianapolis");
Book *pBook = new Book("Memory Management", pAuthor, pPublisher, 39.99);

cout << pBook->getBookInfo() << endl;

现在,在其他类中,我必须从对象中读取那些传递的变量并将它们分配到其他地方。在这段代码中,我只使用传递的值而不使用对象,因为我不确定如何处理它们。

Book::Book(string title, Author *pAuthor, Publisher *pPublisher, double price)
{
    this->title = title;
    this->price = price;
}

如何从传递的对象中读取传递的值?

编辑,我的问题可能有些混乱。下面的代码必须访问变量并插入到稍后将使用它们的方法中。

我尝试插入的每个变量看起来像这样。我不想访问作者的私有变量,因为当它们被设置为私有时我无法访问,但它们仍然是空的。

我现在的代码是:

Book::Book(string title, Author *pAuthor, Publisher *pPublisher, double price)
{
    this->title = title;
    this->price = price;

    author.setFirstName();
    author.setLastName();

    publisher.setName();
    publisher.setAddress();
    publisher.setCity();
}
4

3 回答 3

2

使用此语法,假设您有这些变量并且它们是公共的。

pAuthor->first_name ;
pAuthor->last_name ;

而对于其他类。

pPublisher->author ;
pPublisher->name ;
pPublisher->place ;

运算符取消引用指向对象的'->'指针,或者换句话说,将您带到所需的变量。

最好将这些数据成员用作私有成员。如果这样做,您将无法直接访问它们。您必须使用 getter 和 setter 函数来读取和写入它们的值。

他们看起来像这样。

pAuthor->getfirst_name() ;
pAuthor->getlast_name() ;

pPublisher->getauthor() ;
pPublisher->getname() ;
pPublisher->getplace() ;

最后,最好不要按值传递这些对象。通过引用传递它们并const在它们之前使用。

于 2012-09-03T18:53:49.247 回答
2

理想情况下,您在对象定义中提供“getter”和“setter”函数并使用它们。

于 2012-09-03T18:53:54.717 回答
2

您传入一个指向对象的指针,通过该指针您可以调用该类的任何公共方法。像这样

 pAuthor->public_member_function();

您将需要实现类的功能Author以允许其他类访问您希望能够检索的数据

于 2012-09-03T18:54:24.350 回答