Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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++_Templates_Inheritance_Casting - Fatal编程技术网

C++ 降级到多重继承未定义的行为?

C++ 降级到多重继承未定义的行为?,c++,templates,inheritance,casting,C++,Templates,Inheritance,Casting,我有多个计算单元,每个计算单元操作自己的数据,我有一些要求将所有这些数据合并到一个对象向量中。因此,我创建了以下模板: template <class D1 = Dummy<1>, class D2 = Dummy<2>, class D3 = Dummy<3>, class D4 = Dummy<4>, class D5 = Dummy<5>, class D6 = Dummy<6> > struct Gro

我有多个计算单元,每个计算单元操作自己的数据,我有一些要求将所有这些数据合并到一个对象向量中。因此,我创建了以下模板:

 template <class D1 = Dummy<1>, class D2 = Dummy<2>, class D3 = Dummy<3>, class D4 = Dummy<4>, class D5 = Dummy<5>, class D6 = Dummy<6> >
struct GroupData : public GenericType, D1, D2, D3, D4, D5, D6 {
        GroupData() : GenericType(), D1(), D2(), D3(), D4(), D5(), D6() {}

        template <class T>
        T& Get() {
                T* result = static_cast<T*>(this);
                if (!result) PLOGL("GroupData Bad cast!");
                return *(result);
        }
};
然后我有:

std::vector<GenericType*> dataSet;
typedef GroupData<C1, C2, C3, C4> MyData;
dataSet.push_back(new MyData);
当我需要访问它时:

C1& c1 = static_cast<MyData*>(dataSet[0])->Get<C1>();
我注意到,当我修改GroupData定义为有11个参数时,事情开始变得奇怪。 对数据的计算显示了奇怪的结果,尽管所有输入看起来都很好,但它并不总是发生在不同的构建或优化级别上。 我正在Redhat5上使用g++4.1.2


如有任何意见,我们将不胜感激。

如果我首先检查MyData*==NULL,则一切正常,且从不为NULL。