我嘗試使用下面的代碼,但不能讓它來完成。從模板類派生?
任何人都可以看到這個問題?
class IResourceJob
{
public:
virtual ~IResourceJob() {}
virtual void execute() = 0;
};
template<typename T>
class ResourceJob : public IResourceJob
{
public:
void execute()
{
static_assert(false, "Specialised ResourceJob<T> not defined!");
}
};
template<>
class ResourceJob<int>
{
public:
void execute()
{
// test.
}
};
下使用提供了一個編譯錯誤:
IResourceJob* job = new ResourceJob<int>;
謝謝!
你明確的專業化'ResourceJob'沒有從'IResourceJob'繼承,還有,靜態轉換是錯誤的,你的意思是'static_assert'? –
2012-08-14 21:19:57
謝謝,抱歉 - static_cast是一個錯字。 – James 2012-08-14 21:26:09