gpt4 book ai didi

c++ - 工厂设计模式问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:07:22 25 4
gpt4 key购买 nike

假设有一个工厂如下。我想知道是否可以不包括 ObjectA.h 和 ObjectB.h。

目录结构
工厂

|-----对象A

|-----对象B

既然我不想在子目录下包含头文件,请问有什么办法吗?而如果有新的objectC,则不需要修改工厂类。如果类型是“TypeC”,它会自动创建 ObjectC。

#include "ObjectA.h"
#include "ObjectB.h"

object* create(const string& type)
{
if (type == "typeA")
{
return new ObjectA();
}
else
{
return new ObjectB();
}
};

最佳答案

是的,将实现分离到一个实现文件中,并且只在其中包含文件,在 header 中仅提供函数原型(prototype)。

要实际调用 new ObjectA();new ObjectB();,您必须在调用站点中包含定义。

//factory.h
object* create(const string& type);

//factory.cpp
#include "factory.h"
#include "ObjectA.h"
#include "ObjectB.h"

object* create(const string& type)
{
if (type == "typeA")
{
return new ObjectA();
}
else
{
return new ObjectB();
}
};

关于c++ - 工厂设计模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11464799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com