多个头文件,如何在Object上使用函数

时间:2017-08-20 16:29:23

标签: c++ object methods header typedef

如何从方法中访问标头中的变量或typedef?似乎typedef不是全局的,即使我包含头文件,为什么?

我有以下情况:

Snake.h

#ifndef SNAKE_H
#define SNAKE_H
#include <utility>

class Snake {
public: 
    Snake(int difficulty, int posX, int posY) : difficulty(difficulty) {
        position.first = posX;
        position.second = posY;
    }
    inline std::pair<int,int> const getPosition() {
        return position;
    }

private: 
typedef std::pair<int, int> Point;
    Point position;
};

#endif // !Snake.h

Movement.cpp

#include "Movement.h"
#include "Snake.h"

Snake moveDown() {

    Point dummy = SnakeObject.getPosition();
    return .....;
}

现在显然这不会编译,因为缺少了东西,但编译器无法识别Movement.cpp文件中的Point类型。 另外,我在Movement.h中是否需要一个Snake指针,所以我可以使用snake对象来调用getPosition?

对于模糊的描述我很抱歉,非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

Point被声明为private类成员,因此非类成员无法访问它。

要么使它成为public类成员,请改用底层std::pair类型(就像方法实际指定的声明的返回类型一样),或者将返回值赋给auto