【发布时间】:2017-08-31 21:02:42
【问题描述】:
我有这个代码:
struct Foo1 {}
struct Foo1Helper {} // generated
struct Foo2 {}
struct Foo2Helper {} // generated
struct Foo1Factory {
Foo1* Create(){
return connect();
}
protected:
Foo1 *connect();
}
// cpp file (important because i don't want to have Foo1Helper in .h file)
Foo1* Foo1Factory::connect(){
return Foo1Helper::doSmth();
}
struct Foo2Factory {
Foo2* Create(){
return connect();
}
protected:
Foo2 *connect();
}
// cpp file (important because i don't want to have Foo2Helper in .h file)
Foo2* Foo2Factory::connect(){
return Foo2Helper::doSmth();
}
我有两个类 Foo1 和 Foo2,它们都是在 Foo1Helper 和 Foo2Helper 类的帮助下使用工厂类创建的。
这个想法是因为有很多重复的代码,所以只有一个工厂类,唯一的区别是在连接函数中调用的辅助函数。
注意:我想从头文件中隐藏 Helper 类,因此连接功能必须在 .cpp 文件中实现。
【问题讨论】:
-
问题是什么?这段代码有太多错误,对我来说没有任何意义
-
这个问题比its predecessor 更有意义,但仍然是一头雾水。您有两个工厂,每个工厂都将对象创建指向不同的帮助类,每个都动态生成不同的对象类型。我想你可以在某处堵塞模板专业化或一些函数重载,但实际的最终目标仍然不完全清楚。
Foo1Helper和Foo2Helper迟早要被明确使用。