如何从方法中访问标头中的变量或typedef?似乎typedef不是全局的,即使我包含头文件,为什么?
我有以下情况:
#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
#include "Movement.h"
#include "Snake.h"
Snake moveDown() {
Point dummy = SnakeObject.getPosition();
return .....;
}
现在显然这不会编译,因为缺少了东西,但编译器无法识别Movement.cpp文件中的Point类型。 另外,我在Movement.h中是否需要一个Snake指针,所以我可以使用snake对象来调用getPosition?
对于模糊的描述我很抱歉,非常感谢您的帮助。
答案 0 :(得分:1)
Point
被声明为private
类成员,因此非类成员无法访问它。
要么使它成为public
类成员,请改用底层std::pair
类型(就像方法实际指定的声明的返回类型一样),或者将返回值赋给auto