【发布时间】:2019-04-20 18:43:21
【问题描述】:
template<typename IPC_TYPE>
class Poller
{
private:
public:
struct Event
{
std::shared_ptr<IPC> ipc;
enum Status
{
NONE = 0, POLLIN = 1, POLLHUP = 2, MessageArrival = 3
}status;
};
//block wait
Event wait(size_t max_wait_time = 50);
};
template<typename IPC_TYPE>
Poller<IPC_TYPE>::Event Poller<IPC_TYPE>::wait(size_t max_wait_time = 50)
{
Event e;
return Event();
}
我定义了一个类模板Poller 和一个嵌套类Event,我正在编写一个Poller 的成员函数,它返回一个Event 对象,但是编译器报告"
错误 C2061 语法错误:标识符“事件”IPC poller.cpp 8
",我该怎么办?谢谢!
【问题讨论】:
-
你试过
Poller<IPC_TYPE>::Event吗? -
是的,也失败了
-
通常问题在于循环依赖。确保你的头文件不相互包含
-
typename Poller<IPC_TYPE>::Event怎么样? -
在你的类结构中,它应该是
std::shared_ptr<IPC> ipc;还是应该是std::shared_ptr<IPC_TYPE> ipc;?
标签: c++ c++11 templates visual-c++ inner-classes