Я не уверен, почему я получаю эти ошибки в моем коде. Я пытаюсь создать базовую идею скелета для робота, и он должен проходить через команды в main (), которые были предоставлены мне. Я попытался найти ошибки, подобные этой, но безуспешно. Я думаю, что это связано с тем, как я использую методы в основном, но я не уверен, как бы это изменить. Помощь будет принята с благодарностью.
#include <iostream>
using std::cout;
using std::endl;
enum direction {North, South, East, West};
class ur_Robot
{
private:
int ave;
int str;
direction dir;
int num_beeper;
bool on;
public:
ur_Robot(int a, int str, direction d, int nBeeper);
print(const ur_Robot & u) const;
void pickBeeper(int nBeeper);
void turnLeft(enum direction);
void move(enum direction, int b);
void putBeeper(int nBeeper);
void turnOff(bool o);
};
ur_Robot::ur_Robot(int a, int str, direction d, int nBeeper)
{
ave = a;
str = str;
dir = d;
num_beeper = nBeeper;
on = 1;}
ur_Robot::print(const ur_Robot & u) const
{
if(on == 1)
{
cout << ave << " avenue, " << str;
cout << " street, " << dir << ", ";
cout << num_beeper << " number of beepers " << endl;
};
if(on == 0)
cout << "ur_Robot is off and unable to take commands.";
}
void ur_Robot::turnLeft(enum direction)
{
if(on == 1)
{
if (dir == North)
dir = West;
if (dir == South)
dir = East;
if (dir == West)
dir = South;
if (dir == East)
dir = North;
}
if(on == 0)
cout << "ur_Robot is off and unable to take commands.";
}
void ur_Robot::putBeeper(int nBeeper)
{
if(on == 1)
num_beeper =- num_beeper;
if(on == 0)
cout << "ur_Robot is off and unable to take commands.";
}
void ur_Robot::pickBeeper(int nBeeper)
{
if(on == 1)
num_beeper =+ num_beeper;
if(on == 0)
cout << "ur_Robot is off and unable to take commands.";
}
void ur_Robot::turnOff(bool o)
{
on = 0;
}
int main()
{
ur_Robot karel(1,1,East,10);
karel.print (const ur_Robot & u) const;
karel.move(enum direction, int b);
karel.pickBeeper(int nBeeper);
karel.move(enum direction, int b);
karel.print(const ur_Robot & u) const;
karel.turnLeft(enum direction);
karel.move(enum direction, int b);
karel.putBeeper(int nBeeper);
karel.putBeeper(int nBeeper);
karel.turnOff(bool o);
karel.print(const ur_Robot & u);
return 0;
}
In function 'int main()':
88 [Error] expected primary-expression before 'const'
90 [Error] expected primary-expression before 'enum'
90 [Error] expected primary-expression before 'int'
91 [Error] expected primary-expression before 'int'
92 [Error] expected primary-expression before 'enum'
92 [Error] expected primary-expression before 'int'
93 [Error] expected primary-expression before 'const'
95 [Error] expected primary-expression before 'enum'
96 [Error] expected primary-expression before 'enum'
96 [Error] expected primary-expression before 'int'
97 [Error] expected primary-expression before 'int'
98 [Error] expected primary-expression before 'int'
99 [Error] expected primary-expression before 'bool'
101 [Error] expected primary-expression before 'const'
Как сказано выше, сначала очистите вашу декларацию
print(const ur_Robot & u) const;
к
void print(const ur_Robot & u) const;
Кроме того, вам нужно изменить определение
ur_Robot::print(const ur_Robot & u) const
{
//...
}
к
void ur_Robot::print(const ur_Robot & u) const
{
//...
}
Кроме того, ваше использование using std::cout
а также using std::cin
является несколько нестандартным и охватывается гораздо более широкими
using namespace std;
Большая часть проблемы в вашем коде связана с тем, что вы ничего не передаете в ur_Robot
функции-члены, как вы их называете, и независимо от того, тебе не нужно.
Ваша реализация print(const ur_Robot & u) const
Например, используются только переменные-члены, поэтому вы можете вырезать ссылку на другой ur_Robot
объект целиком:
void print() const;
Точно так же это определение должно быть сокращено также:
void ur_Robot::print() const
{
//...
}
Это касается почти всех ur_Robot
функции-члены.
Дополнительно, void ur_Robot::move(enum direction, int b)
никогда не определяется должным образом, поэтому пытается использовать его в main()
будет иметь менее желательные результаты.
Вы не указали тип возврата в объявлении функции-члена:
print(const ur_Robot & u) const;
Глядя на реализацию, вам нужно использовать:
void print(const ur_Robot & u) const;
Как только вы исправите объявление, реализация должна быть изменена, чтобы соответствовать объявлению.