编辑:只是忘记添加“ state_manager::”我的坏。

我正在尝试创建一个简单的状态系统。为了保存一些类型并使以后更容易更改,我在state_manager.hpp中放置了一些typedef。问题在于这些在我的state_manager.cpp中似乎无法识别。
我遇到类似'element' does not name a type和奇怪的'states' was not declared in this scope的错误。我对此感到非常困惑。

state_manager.hpp:

#pragma once
#include <stack>
#include <memory>

class state;

class state_manager{
 typedef std::unique_ptr<state> element;
 typedef std::stack<element> container;
protected:
 container states;
public:
 void push(const element &to_push);
 void pop();
 void change(const element &change_to);
};


state_manager.cpp:

#include "state_manager.hpp"
#include "state.hpp"

void push(const element &to_push){
 states.push(to_push);
}

void pop(){
 states.pop();
}

void change(const element &change_to){
 states.pop();
 push(change_to);
}

最佳答案

void push(const element &to_push){
    states.push(to_push);
}


-您不是在定义成员函数,而是在定义非成员函数,因此您无权访问类的私有成员。之后,您会收到一个链接器错误。不要忘记添加前缀:

void state_manager::push(const element &to_push){
    states.push(to_push);
}

关于c++ - header 中的私有(private)Typedef?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32938668/

10-09 02:01