基类中基类子类型的成员变量

bc888

有没有办法对模板执行以下操作?以下代码引发未知的类型编译时错误。

我正在尝试创建两种不同类型的应用程序,它们是从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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章