C++ 基类中基类子类型的成员变量
是否有一种方法可以使用模板执行以下操作?以下代码抛出未知类型的编译时错误C++ 基类中基类子类型的成员变量,c++,c++11,C++,C++11,是否有一种方法可以使用模板执行以下操作?以下代码抛出未知类型的编译时错误 我试图创建两种不同类型的应用程序,一种是从应用程序继承的,另一种是从服务继承的,从应用程序继承的。所有应用程序都有一个名为Cron的服务,该服务将从服务继承。应用程序将被线程化和分离,而从应用程序派生的服务将被线程化和连接。我把它分解成最简单的术语 #include <iostream> class Application { public: Service service; //Throws unknown
我试图创建两种不同类型的应用程序,一种是从应用程序继承的,另一种是从服务继承的,从应用程序继承的。所有应用程序都有一个名为Cron的服务,该服务将从服务继承。应用程序将被线程化和分离,而从应用程序派生的服务将被线程化和连接。我把它分解成最简单的术语
#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;
}
#包括
班级申请
{
公众:
服务;//抛出未知类型…Forward decl.也将不起作用。
};
班级服务:公开申请
{
};
int main(int argc,const char*argv[]
{
//在这里插入代码。。。
不,没有办法做你想做的,因为你想做的是胡说八道。等等,我会解释的
服务
源自应用程序
,但应用程序
具有类型为服务
的成员
这是一个循环依赖性,但除此之外,我只是不明白。因为服务是从应用程序派生出来的,它有一个服务类型的成员,它是从应用程序派生出来的,它有一个服务类型的成员……你明白了。这就像站在一个mi面前一样带着一面镜子,努力寻找结局
现在的问题是,你到底想做什么
你在评论中说:
我正在尝试创建两种不同类型的应用程序
从应用程序继承,以及从服务继承的
从应用程序继承。所有应用程序都有一个名为
Cron,它将从服务继承
这里还有一点模棱两可。应用程序如何从应用程序派生
我猜想您想要的是实现服务
的类的两个不同的具体实例化。一个只实现服务
,另一个也实现其他东西
在这种情况下:
class Service
{
public:
void Cron();
};
class Application
{
public:
void OtherStuff();
};
但你也说过:
应用程序将被线程化和分离,而派生
从应用程序将螺纹和连接
这听起来像是一个年轻人的工作
class-DetatchedPolicy
{
公众:
void StartThread();//此函数将启动线程并解除跟踪
};
类联合策略
{
公众:
void StartThread();//此函数将启动线程并加入
};
模板
类基本服务
:
公共线程策略
{
公众:
服务()
{
StartThread();
}
void Cron();
};
typedef基本服务服务;
typedef基本服务应用程序;
不,没有办法做你想做的事,因为你想做的是胡说八道。等等,我会解释的
服务
源自应用程序
,但应用程序
具有类型为服务
的成员
这是一个循环依赖性,但除此之外,我只是不明白。因为服务是从应用程序派生出来的,它有一个服务类型的成员,它是从应用程序派生出来的,它有一个服务类型的成员……你明白了。这就像站在一个mi面前一样带着一面镜子,努力寻找结局
现在的问题是,你到底想做什么
你在评论中说:
我正在尝试创建两种不同类型的应用程序
从应用程序继承,以及从服务继承的
从应用程序继承。所有应用程序都有一个名为
Cron,它将从服务继承
这里还有一点模棱两可。应用程序如何从应用程序派生
我猜想您想要的是实现服务
的类的两个不同的具体实例化。一个只实现服务
,另一个也实现其他东西
在这种情况下:
class Service
{
public:
void Cron();
};
class Application
{
public:
void OtherStuff();
};
但你也说过:
应用程序将被线程化和分离,而派生
从应用程序将螺纹和连接
这听起来像是一个年轻人的工作
class-DetatchedPolicy
{
公众:
void StartThread();//此函数将启动线程并解除跟踪
};
类联合策略
{
公众:
void StartThread();//此函数将启动线程并加入
};
模板
类基本服务
:
公共线程策略
{
公众:
服务()
{
StartThread();
}
void Cron();
};
typedef基本服务服务;
typedef基本服务应用程序;
我想你真正想做的是使用指针
class Service;
class Application
{
std::shared_ptr<Service> m_service;
};
class Service : public Application
{
};
类服务;
班级申请
{
std::共享ptr m_服务;
};
班级服务:公开申请
{
};
我想你真正想做的是使用指针
class Service;
class Application
{
std::shared_ptr<Service> m_service;
};
class Service : public Application
{
};
类服务;
班级申请
{
std::共享ptr m_服务;
};
班级服务:公开申请
{
};
在我看来,将接口与实现分离可能会让您受益匪浅:
struct ApplicationInterface
{
virtual ~ApplicationInterface() {}
virtual void do_application_stuff_1() = 0;
virtual void do_application_stuff_2() = 0;
};
struct ServiceInterface
: public ApplicationInterface
{
virtual ~ServiceInterface() {}
virtual void do_service_stuff_1() = 0;
virtual void do_service_stuff_2() = 0;
};
class CronService
: ServiceInterface
{
public:
// ApplicationInterface
virtual void do_application_stuff_1() {}
virtual void do_application_stuff_2() {}
// ServiceInterface
virtual void do_service_stuff_1() {}
virtual void do_service_stuff_2() {}
};
class Application
: ApplicationInterface
{
protected:
CronService cron;
public:
virtual void do_application_stuff_1() {}
virtual void do_application_stuff_2() {}
};
在我看来,将接口与实现分离可能会让您受益匪浅:
struct ApplicationInterface
{
virtual ~ApplicationInterface() {}
virtual void do_application_stuff_1() = 0;
virtual void do_application_stuff_2() = 0;
};
struct ServiceInterface
: public ApplicationInterface
{
virtual ~ServiceInterface() {}
virtual void do_service_stuff_1() = 0;
virtual void do_service_stuff_2() = 0;
};
class CronService
: ServiceInterface
{
public:
// ApplicationInterface
virtual void do_application_stuff_1() {}
virtual void do_application_stuff_2() {}
// ServiceInterface
virtual void do_service_stuff_1() {}
virtual void do_service_stuff_2() {}
};
class Application
: ApplicationInterface
{
protected:
CronService cron;
public:
virtual void do_application_stuff_1() {}
virtual void do_application_stuff_2() {}
};
当服务
从应用程序
继承而来,它有一个服务
类型的成员时,这就不再有意义了。我们真正想做的是什么,为什么?如果应用程序
包含一个服务
,它是应用程序
的一部分Ination
…您在哪里停下来?一个应用程序
对象有多大?我正在尝试创建两种不同类型的应用程序,一种是从应用程序继承的应用程序,另一种是从服务继承的应用程序。所有应用程序都有一个名为Cron的服务,它将从服务继承。