C++;错误:与';不匹配;操作员<<';在'&引用;“的数据”<&书信电报;罗孚:getName()'; 我正在为我的C++类编写一些代码,我有点被卡住了。

C++;错误:与';不匹配;操作员<<';在'&引用;“的数据”<&书信电报;罗孚:getName()'; 我正在为我的C++类编写一些代码,我有点被卡住了。,c++,class,C++,Class,以下是我正在做的作业: 在Rover类中,指定以下成员实例变量:  name (String)  x position on a grid (integer)  y position on a grid (integer)  direction by compass – N, S, E, or W (String)  speed (0 – 5 meters per second, integer) 在Rover类中,指定以下方法:  No-arg constructor

以下是我正在做的作业:


在Rover类中,指定以下成员实例变量:

 name (String)

 x position on a grid (integer)

 y position on a grid (integer)

 direction by compass – N, S, E, or W (String)

 speed (0 – 5 meters per second, integer)
在Rover类中,指定以下方法:

 No-arg constructor – set the rover’s position to (0,0), its speed to 0, 
  its direction to North,and its name to Default

 Constructor that receives parameters to initialize all five 
  instance variables described above

 Setter methods for each instance variable

 Getter methods for each instance variable

 getRoverData – returns a string that displays values for each instance 
  variable of the current rover object, placing each value on a separate line, 
  as follows:
所以现在我只想让这个基本案例起作用。以下是我的全部代码:


main.cpp:

#include <iostream>
#include "Rover.h"

using namespace std;


int main() {

    Rover rover1;

    rover1.setDefaultValues();

    cout<<rover1.getRoverData(rover1)<<endl;

    return 0;
}
我当前遇到的错误是:

rover.cpp:64: error: no match for 'operator<<' in '"Data for " << Rover::getName()()'
有什么想法吗

对不起,如果代码看起来很糟糕,因为我张贴它…没有这样做之前


更新:



所以,它基本上不会打印出零。想法?

代码>是的!它编译!非常感谢你!不过现在它做了一些奇怪的事情,看下一篇帖子。如果你想看的话,我用更多的理论更新了我的答案。哦,很好。这非常有帮助:)我说不出我是Java人,对吗?;)虽然我根本不喜欢java,但还是非常喜欢C++!是的,当我发现Java没有运算符重载时,我很惊讶。它可能被严重滥用,但对于大多数用途来说,它是非常有用的。想象一下,当我上了一个
BigInt
课程,却不能使用
a+b
。对不起,为了适应论坛规则,我将新问题放在了主问题的更新中:)如果您有任何见解,我将不胜感激。
/* 
 * File:   Rover.h
 * Author: Matthew
 *
 * Created on May 14, 2012, 8:10 PM
 */


#ifndef ROVER_H
#define ROVER_H

using namespace std;


class Rover
{
        private:
            string name;
            int xcoord;
            int ycoord;
            string direction;
            int speed;


    public:
            void setDefaultValues();
            void constructRover();
            //XCoordinates
            void setXcoord(int xcoord);
            int getXcoord();
            //YCoordinates
            void setYcoord(int ycoord);
            int getYcoord();
            //Name
            void setName(string name);
            string getName();
            //Direction
            void setDirection(string direction);
            string getDirection();
            //Speed
            void setSpeed(int speed);
            int getSpeed();
            //Printout
            string getRoverData(Rover rover);

};

#endif  /* ROVER_H */
rover.cpp:64: error: no match for 'operator<<' in '"Data for " << Rover::getName()()'
Data for Default
X: 0
Y: 0
Direction: N
Speed: 0
#include <iostream>
#include "Rover.h"
using namespace std;

//put functions in here

void Rover::setDefaultValues() {
    name = "Default";
    xcoord = 0;
    ycoord = 0;
    direction = "N";
    speed = 0;

}

void Rover::constructRover() {

}

void Rover::setXcoord(int xcoord) {
    this->xcoord = xcoord;
}

void Rover::setYcoord(int ycoord) {
    this->ycoord = ycoord;

}

void Rover::setName(string name) {
    this->name = name;
}

void Rover::setDirection(string direction) {
    this->direction = direction;
}

void Rover::setSpeed(int speed) {
    this->speed = speed;
}

int Rover::getXcoord() {
    return xcoord;

}

int Rover::getYcoord() {
    return ycoord;
}

string Rover::getName() {
    return name;
}

string Rover::getDirection() {
    return direction;
}

int Rover::getSpeed() {
    return speed;
}

string Rover::getRoverData(Rover rover) {
    string printStatement = "";
    printStatement.append("Data for " + rover.getName());
    printStatement.append("\nX: " + rover.getXcoord());
    printStatement.append("\nY: " + rover.getYcoord());
    printStatement.append("\nDirection: " + rover.getDirection());
    printStatement.append("\nSpeed: " + rover.getSpeed());
    return printStatement;

}
Data for Default
X:
Y:
Direction: N
Speed:
std::cout << "Some string" << someStdString;
(std::cout << "Some string") <<  someStdString;
operator<< (operator<< (std::cout, "Some string"), someStdString);
int i = 5 + 2 + 3;
printStatement.append("Data for " + rover.getName());
//or
printStatement.append("Data for ");
printStatement.append(rover.getName());
//or
printStatement += "Data for " + rover.getName();
#include <sstream>

int main()
{
    std::stringstream ss;
    ss << 5; //the int to be converted
    std::string s = ss.str(); //get the string
    cout << s + " is the number"; //print with an added string
}