2014-12-13 55 views
-3

這是一個任務我試圖搞清楚:C++面向對象的問題

創建一個名爲項目3新項目,並創建一個名爲路虎

在羅孚類類,指定以下成員實例變量:

  • 名稱(字符串)上的網格(整數)
  • x位置
  • ÿ N,S,E,或W(字符串)
  • 速度 - 上的網格(整數)由羅盤
  • 方向位置(0 - 每秒5米,整數)

在流動站類,指定以下方法:

  • 默認構造方法 - 設置流動站的位置(0,0),其速度爲0,其方向 北。接收參數
  • 構造函數來初始化上述
  • setter方法爲每個實例變量
  • 每個實例變量
  • getRoverData getter方法描述的所有五個實例變量 - 返回的每個實例變量顯示值的字符串所述 當前流動站對象,將每個值在單獨的行,如下所示:

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

創建一個類客戶端(主),該客戶端創建最多五個流動站的陣列,並獲取來自用戶的所有流動站的初始值 值。用戶指定每個流動站的值後,顯示流動站值的摘要 ,如上所示。

我有大約10億個錯誤,我不知道爲什麼。

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; 
} 
+6

_「我有大約10億個錯誤」_ - 但是你不能打擾他們發佈。請在您的帖子中包含確切的錯誤消息。 – 2014-12-13 00:24:22

+0

這是一個類或頭文件,它似乎已融合成一個! – SemperAmbroscus 2014-12-13 00:24:31

+2

此代碼中有很多基本錯誤。如果您不確定自己在做什麼,那麼在嘗試編譯之前,應該寫出更少的新代碼行。這樣一來,在一個更加局部的區域,你將會減少錯誤。 – wakjah 2014-12-13 00:28:43

回答

-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();沒有多大意義,除非它實際上是接受一個參數。