运算符<<<不匹配(操作数类型std :: ostream)c ++ OOP和Point [英] no match for operator << (operand types std::ostream) c++ OOP and 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<<
.
这篇关于运算符<<<不匹配(操作数类型std :: ostream)c ++ OOP和Point的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!