class — Почему я получаю [Error] ожидаемое первичное выражение до » c ++?

Я не уверен, почему я получаю эти ошибки в моем коде. Я пытаюсь создать базовую идею скелета для робота, и он должен проходить через команды в 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'

1

Решение

Маленький материал:

Как сказано выше, сначала очистите вашу декларацию

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() будет иметь менее желательные результаты.

1

Другие решения

Вы не указали тип возврата в объявлении функции-члена:

print(const ur_Robot & u) const;

Глядя на реализацию, вам нужно использовать:

void print(const ur_Robot & u) const;

Как только вы исправите объявление, реализация должна быть изменена, чтобы соответствовать объявлению.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector