C ++面向对象的问题

时间:2014-12-13 00:22:00

标签: c++ object

这是我想弄清楚的一项任务:

  

创建一个名为Project3的新项目,并创建一个名为Rover的类

     

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

     
      
  • 名称(字符串)
  •   
  • 网格上的x位置(整数)
  •   
  • y在网格上的位置(整数)
  •   
  • 指南针方向 - N,S,E或W(字符串)
  •   
  • 速度(0 - 5米/秒,整数)
  •   
     

在Rover类中,指定以下方法:

     
      
  • 默认构造函数 - 将流动站的位置设置为(0,0),将其速度设置为0,将其方向设置为   北部。
  •   
  • 接收参数以初始化上述所有五个实例变量的构造函数
  •   
  • 每个实例变量的setter方法
  •   
  • 每个实例变量的getter方法
  •   
  • getRoverData - 返回一个字符串,显示每个实例变量的值   当前流动站对象,将每个值放在一个单独的行上,如下所示:

    Rover name: A
    X-position: 0
    Y-position: 0
    Direction: E
    Speed: 1
    
  •   
     

创建一个类客户端(main),创建一个最多五个流动站的数组并获取初始值   来自用户的所有流动站的值。用户指定每个流动站的值后,显示摘要   如上所示,流动站的价值。

我有大约十亿个错误,我不知道为什么。

using namespace std;

class Rover {
private:
    string name;
    int x;
    int y;
    string direction;
    int speed;
    int position[10][10];
public:
    void Rover();
    void constructor(string name, int x, int y, string direction, int speed);
    void setName(string name);
    void setX(int x);
    void setY(int y);
    void setDirection(string direction);
    void setSpeed();
    string getName();
    int getX();
    int getY();
    string getDirection();
    int getSpeed();
    string getRoverData();



};

void Rover::Rover() {
    r1.position[0][0];
    r1.speed = 0;
    r1.direction = "N";
}

string Rover::getRoverData() {
    cout << "Rover name: " << r1.getName() << endl;
    cout << "X-position: " << r1.getX() << endl;
    cout << "Y-position: " << r1.getY() << endl;
    cout << "Direction: " << r1.getDirection() << endl;
    cout << "Speed: " << r1.getSpeed() << endl;
}

void Rover::constructor(string name1, int x1, int y1, string direction1, int speed1) {
    r1.name = name1;
    r1.x = x1;
    r1.y = y1;
    r1.direction = direction1;
    r1.speed = speed1;

}

void Rover::setName(string name) {
    r1.name = name;
}

void Rover::setX(int x) {
    r1.x = x;
}

void Rover::setY(int y) {
    r1.y = y;
}

void Rover::setDirection(string direction) {
    r1.direction = direction;
}

void Rover::setSpeed(int speed) {
    r1.speed = speed;
}

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

int Rover::getX() {
    return x;
}

int Rover::getY() {
    return y;
}

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

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

int main(int argc, char** argv) {
    string name;
    int x;
    int y;
    string direction;
    int speed;

    Rover r1;
    r1.constructor("Yoda", 3, 3, "N", 3);

    cout << "Enter name for Rover: ";
    cin >> name;
    r1.setName(name);
    cout << "Enter its x position: ";
    cin >> x;
    r1.setX(x);
    cout << "Enter its y position: ";
    cin >> y;
    r1.setY(y);
    cout << "Enter direction N,E,S,W: ";
    cin >> direction;
    r1.setDirection(direction);
    cout << "Enter its speed: ";
    cin >> speed;
    r1.setSpeed(speed);

    r1.getRoverData();


    return 0;
}

1 个答案:

答案 0 :(得分:-1)

您的示例似乎不完整。我猜你错过了在帖子中包含以下几行

#include <string>
#include <iostream>
using namespace std;

首先,构造函数没有返回类型,因此void Rover();没有意义。删除void,你就是那里的金色。

其次,您认为r1到底应该是什么?编译器应该告诉您标识符是未定义的,因为它不是。从您的成员函数中删除r1.(即任何以Rover::开头的函数。并且您在那里是金色的。

第三,您认为r1.position[0][0]会怎么做?这只是一个什么都不做的表达。即使position[0][0]也不会做任何事情。也许你想以某种方式初始化数组,但是你没有提供足够的信息来确定你想用它完成什么。

第四,成员函数void Rover::setSpeed(int)尚未在Rover类中声明。你忘了什么吗?根据您的代码,它应该是

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

第五,void Rover::setSpeed();除非实际接受论证,否则没有多大意义。

相关问题