Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;类中的泛型字段/属性_C++_Class - Fatal编程技术网

C++ C++;类中的泛型字段/属性

C++ C++;类中的泛型字段/属性,c++,class,C++,Class,我不知道如何建立这个,但这里是基本的。我有一个读取文件的类。在它运行的过程中,对于每个“片段”(给定文件中的许多片段),它都有一些通用的处理方法。在处理每个“片段”时,它的特定类型会被识别,我希望通过该特定类型添加另一个类的实例(通过该类的new*instance()) 这是我希望最终达到的基线 class SpecificBaseline { public: SpecificBaseline(); virtual void ThisHandledPerDerive

我不知道如何建立这个,但这里是基本的。我有一个读取文件的类。在它运行的过程中,对于每个“片段”(给定文件中的许多片段),它都有一些通用的处理方法。在处理每个“片段”时,它的特定类型会被识别,我希望通过该特定类型添加另一个类的实例(通过该类的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实例,它正在检测它应该表示/操作的类型(根据上面的类/子类)

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...
}

类MyClass
{
废话。。。
}
并为每种类型构建一个指针数组,但不确定当指针可以是所需“SpecificBaseline”的任何类型时如何正确创建指针


欢迎提供任何帮助,甚至其他解决方案。

您需要的是一个工厂方法
ReadSpecificType
。使所有特定类型从公共基类继承,并创建一个工厂方法,该方法将要解析的字符串作为参数,并返回一个指向公共基类的点。

我考虑了工厂过程,但我想我缺少的是属性的声明,以及如何应用新创建的类。根据示例,我已经有了特定类型的类,但编译错误是不能从类型[x]更改为[y]其中X是顶层,Y是派生类。@ DRAP可能是与其他语言混淆的。在C++中,你可以用指针或引用(T&)来进行多态性。这就是为什么我建议你返回一个指向基类的指针。谢谢,我已经查看了工厂样本,但无法从头脑中得到它。(但那是昨晚11:30左右。)无论如何,我今晚回家后会回到我的项目。