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 に答える