0

関数 print でクラスの型を指しているポインターの値をグローブとして出力する方法を試してみましたが、ポインターが指している x と y の値を出力する方法を知りません。このコード:

int main(){

#include<iostream>
using namespace std;
    class POINT { 
        public:
            POINT (){ } 
            POINT (int x, int y){ x_=x; y_=y;}
            int getX (){ return x_; } 
            int getY (){ return y_; }
            void setX (int x) { x_ = x; }
            void setY (int y) { y_ = y; }
        void print( ) { cout << "(" << x_ << ","<< y_ << ")";}
        void read( ) {cin>> x_; cin>>y_;}
        private:        
            int x_;
         int y_;
};  
 void print (   POINT * p1Ptr , POINT * p2ptr){
    POINT* x= p1Ptr; POINT*y=p2ptr;
    cout<<x<<y;
} 
int main(){

 POINT p1(3,2);
 POINT p2(6,6);
  POINT *p1Ptr=&p1;
    POINT *p2Ptr=&p2;
    double d=0.0;
     double *dPtr=&d;
     p1Ptr->getX();
     p2Ptr->getX();
     p1Ptr->getY();
     p2Ptr->getY();
     print ( &p1, &p2); 
    system ("pause");
    return 0;
}
4

2 に答える 2

2

これがあなたの言いたいことかどうかは正確にはわかりませんが、どうですか:

class POINT { 
public:
    // skipped some of your code...

    void print(std::ostream& os) const
                         // note ^^^^^ this is important
    {
        // and now you can print to any output stream, not just cout
        os << "(" << x_ << ","<< y_ << ")";
    }

    // skipped some of your code...
};

std::ostream& operator<<(std::ostream& os, const POINT& pt)
{
    pt.print(os);
    return os;
}

void print (POINT * p1Ptr , POINT * p2ptr){
    cout << *p1Ptr << *p2ptr;
}
于 2013-10-05T07:55:26.267 に答える
2

あなたが望むcout << *x << *y;(またはcout << *p1Ptr << *p2ptr;、ポインターをPOINT関数内にコピーすることに実際には意味がない(しゃれが意図されている!)ので)。

operator<<申し訳ありませんが、 forがあると思いましたPOINT

p1ptr->print(); p2ptr->print();すでに持っている機能を使用するには、使用する必要があります。

于 2013-10-05T07:53:28.520 に答える