我不知道如何构建它,但这是基础知识。我有一个读取文件的类。当它经历时,它有一些通用的处理和每个“片段”(给定文件中的许多片段)。当每个“片段”被处理时,它的SPECIFIC类型被识别,我想要添加特定类型的另一个类的实例(通过该类的新*实例()。这是我正在尝试的基础知识做。
这是我想要最终达到的基线
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”的情况下正确创建指针。
任何帮助,甚至是其他解决方案。
答案 0 :(得分:2)
您需要的是工厂方法ReadSpecificType
。使所有特定类型继承自公共基类,并创建一个工厂方法,该方法将要解析的字符串作为参数,并将一个点返回到公共基类。