为什么我在''c ++之前得到[Error]期望的primary-expression?

时间:2015-11-17 23:31:24

标签: c++ class syntax-error

我不知道为什么我的代码中出现了这些错误。我正在尝试为机器人制作一个基本的骨架概念,它需要通过main()中提供给我的命令。我试图查找类似的错误,但没有运气。我认为这与我如何使用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'

2 个答案:

答案 0 :(得分: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::coutusing 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 :(得分:0)

您没有在成员函数的声明中指定返回类型:

print(const ur_Robot & u) const;

查看实现,您需要使用:

void print(const ur_Robot & u) const;

修复声明后,需要修改实现以匹配声明。