我定义了一个State<>
模板类来接受通用std::function<>
可调用参数列表:
template <typename T> class State;
template <class RV, class... Args>
class State<RV(Args...)>
{
private:
std::function<RV(Args...)> code = nullptr;
public:
RV operator()() {
return code();
}
void setCode(std::function<RV(Args...)> f) {
code = f;
}
State();
State(State&);
State(State&&);
State& operator=(State&);
State& operator=(State&&);
virtual ~State();
};
现在我试图在模块中使用它:
auto s = State<void(cocos2d::Touch* touch, cocos2d::Event* event)>();
定义模板实例化,将内部std::function
配置为接受带有我的参数的lambda(Touch
,Event
)
但我收到链接器错误Undefined symbols
:
Undefined symbols for architecture i386:
"State<void (cocos2d::Touch*, cocos2d::Event*)>::State()", referenced from:
UITableView::UITableView(cocos2d::Size, cocos2d::Vec2) in UITableView.o
"State<void (cocos2d::Touch*, cocos2d::Event*)>::~State()", referenced from:
UITableView::UITableView(cocos2d::Size, cocos2d::Vec2) in UITableView.o
ld: symbol(s) not found for architecture i386
答案 0 :(得分:0)
我只需为类
定义(不仅是声明)构造函数和析构函数State<>::State()
State<>::~State()
谢谢一些程序员指点这个