有没有办法对模板执行以下操作?以下代码引发未知的类型编译时错误。
我正在尝试创建两种不同类型的应用程序,它们是从Application继承的,而那些是从Service继承的Service的。所有应用程序都有一个称为Cron的服务,该服务将从Service继承。应用程序将被线程化和分离,而应用程序派生的服务将被线程化和连接。我把这个分解成最简单的术语。
#include <iostream>
class Application
{
public:
Service service; //Throws unknown type... Forward decl. will not work either.
};
class Service:public Application
{
};
int main(int argc, const char * argv[])
{
// insert code here...
std::cout << "Hello, World!\n";
return 0;
}
谢谢,
布鲁斯
不,没有办法做你想做的事,因为你想做的事是胡说八道。等等,我会解释。
Service
派生自Application
,但Application
具有类型的成员Service
。
这是一个周期性的依赖关系,但除此之外,我只是不理解。因为Service
是从派生的Application
,其成员类型为Service
,而是从派生的Application
,成员类型为Service
...,您就会明白。就像站在一面镜子前,一面镜子,试图找到终点。
现在的问题是,您真正要做什么?
在您的评论中,您说:
我正在尝试创建两种不同类型的应用程序,它们是从Application继承的,而那些是从Service继承的Service的。所有应用程序都有一个称为Cron的服务,该服务将从Service继承。
这里仍然有点模棱两可。应用程序如何从应用程序派生?
我怀疑您追求的是实现的类的两个不同的具体实例化Service
。一个仅实现Service
,另一个也实现其他内容。
在这种情况下:
class Service
{
public:
void Cron();
};
class Application
{
public:
void OtherStuff();
};
但是你也说:
应用程序将被线程化和分离,而应用程序派生的服务将被线程化和连接。
这听起来像是一项基于策略的设计工作。
class DetatchedPolicy
{
public:
void StartThread(); // this function would start the thread and detatch
};
class JoinedPolicy
{
public:
void StartThread(); // this function would start the thread and join
};
template <typename ThreadingPolicy>
class BasicService
:
public ThreadingPolicy
{
public:
Service()
{
StartThread();
}
void Cron();
};
typedef BasicService <JoinedPolicy> Service;
typedef BasicService <DetatchedPolicy> Application;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句