我不知道如何构建它,但这里是基础知识。我有一个读文件的类。在它进行的过程中,它有一些事情是通用处理的,并且针对每个"片段"(给定文件中的许多片段)。当每个"片段"被处理时,它的SPECIFIC类型被识别,我希望通过特定类型添加另一个类的实例(通过该类的new*instance())。以下是我尝试做的基本内容。
这是我想要最终到达的基线
class SpecificBaseline
{
public:
SpecificBaseline();
virtual void ThisHandledPerDerived();
}
Specific subclassed instances
class SubClass1 : SpecificBaseline
{ -- blah -- }
class AnotherSubClass : SpecificBaseline
{ -- blah -- }
class SubSub1 : AnotherSubClass
{ -- blah -- }
这是一个简单的PerPiece实例,它正在检测它应该表示/操作的TYPE(根据上面的类/子类)。
class OnePiece
{
public:
ReadSpecificType(string *s);
protected:
[AnyDerivedFromSpecificBaseline] specificType;
}
OnePiece::ReadSpecificType(string *s)
{
if string contains (whatever)
specificType = new WhichSubClassDerivedFromSpecificBaseline();
else if another expected key
specificType = new DifferentSubClassDerivedFromSpecificBaseline();
else
etc...
}
我甚至在考虑像这样的仿制药
<typename T>
class MyClass<T>
{
blah...
}
以及为每种类型构建一个指针数组,但不确定如何正确创建指针,因为它可以是所需的"SpecificBaseline"的任何类型。
感谢任何帮助,甚至其他解决方案。
您需要的是一个工厂方法ReadSpecificType
。使所有特定类型从公共基类继承,并创建一个工厂方法,该方法将要解析的字符串作为参数,并向公共基类返回一个点。