运算符<<<不匹配(操作数类型std :: ostream)c ++ OOP和Point [英] no match for operator << (operand types std::ostream) c++ OOP and Point

查看:296
本文介绍了运算符<<<不匹配(操作数类型std :: ostream)c ++ OOP和Point的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图显示通过成员函数创建的Point类的p对象. 我在程序的void displayPoint(Point p)成员函数中将Point p作为参数传递. 但是我的程序中出现以下编译错误!

I am trying to display p object of Point class that I have created through member function . I have passed Point p as argument in void displayPoint(Point p) member function of my program. But I am getting the following compilation error in my program!

D:\ OOP分配编号01 \ point.cpp [错误]与'operator<<'不匹配(操作数类型为'std :: ostream {aka std :: basic_ostream}'和'Point')

D:\OOP Assignment # 01\point.cpp[Error] no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream}' and 'Point')

以下是我的代码!!!

Here below is my code !!!

#ifndef POINT_H
#define POINT_H

using namespace std;     // For string usage

class Point
{
public:
    Point();                                    // Default Constructor
    Point(double, double, int);                // Three argument constructor
    void initialize(double, double, int);    
    void shift(Point p, int keyPress);                      // Shift the first point 

    void setValue(int value);
    int getValue() const;
    void setX();
    double getX() const;
    void setY();
    double gety() const;

    void AddPointValue(Point p2);             /*This function add the TWO points  
    successfully reach on second true point co-ordinates*/

    void displayPoint(Point p);                     //This will use to display value
    bool checkCoordinates();
     bool checkTime();                        // Check time remaining
private:
     double x;
    double y;
    int value;

};

#endif

实施文件

#include <iostream>
#include <conio.h>
#include <windows.h>
#include <string>
#include <time.h>
#include <stdio.h>
#include "point.h"

using namespace std;

Point::Point()    // Default Constructor
{
    x = 0.0;
    y = 0.0;
    value = 0;
}
Point::Point(double x1, double y1, int value1){
    x = x1;
    y = y1;
    value = value1;

}

void Point::initialize(double init_x, double init_y, int init_value)
{
    x = init_x;
    y = init_y;
    value = init_value;
}

void Point::shift(Point p, int keyPress){
    Point maxSize;
    Point minSize;
    maxSize.x=80;
    maxSize.y=40;
    switch(keyPress)
    {
        case (VK_LEFT):     // increment the x coord 
            p.x += 1;    
            if(p.x < minSize.x) p.x = minSize.x;
            break;
        case (VK_RIGHT):   // decrement the x coord
            p.x -= 1;
            if(p.x > maxSize.x) p.x = maxSize.x;
            break;
        case (VK_UP):    // decrement the y coord
            p.y -= 1;
            if(p.y < minSize.y) p.y = minSize.y;
            break;
        case (VK_DOWN):    // increment the y coord
            p.y += 1;
            if(p.y > maxSize.y) p.y = maxSize.y;
            break; 
}

void Point::setValue(int value){
    value = 0;
}

int Point::getValue() const{
    return value;
}


void Point::setX(){
     x = 0.0;
}

double Point::getX() const{
    return x;
}

void Point::setY(){
    y = 0.0;
}
double Point::gety() const{
    return y;
}

void Point::displayPoint(Point p){
    cout << p;      // ERROR OCCURING HERE!!!
}

void Point::AddPointValue(Point p2){
}

bool Point::checkTime(){
}

推荐答案

 void Point::displayPoint(Point p){
       cout << p;      // ERROR OCCURING HERE!!!
 }

您没有重载<<运算符可以直接输出类Point的对象.所以你不能那样做.您可以添加重载的operator<<或调用相应的get函数以获取Point的数据成员.

You have not overloaded << operator to output the object of class Point directly. So you can't do that. You can either add an overloaded operator<< or call corresponding get functions to get the data members of Point.

例如,使用get函数:

For example, using get functions:

void Point::displayPoint(Point p){
     cout << p.getX() << " " << p.gety() << endl; 
 }

您可以查看有关operator<<重载的操作员重载C ++ .

You can take a look at Operator Overloading C++ about overloading operator<<.

这篇关于运算符&lt;&lt;&lt;不匹配(操作数类型std :: ostream)c ++ OOP和Point的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆