gpt4 book ai didi

c++ - 在模板化的嵌套和继承类中未检测到变量

转载 作者:太空狗 更新时间:2023-10-29 20:15:13 25 4
gpt4 key购买 nike

我有一个像这样的嵌套和继承结构。

template <typename U, typename T, typename _Prd = equal_to<T> >
class Octree
{
...
private :
BBox<T,3,_Prd> bounds ;

void SplitNode() ;
virtual bool isSplit () ;
...
};


template <typename U, typename T, typename _Prd = equal_to<T> >
class Hull
{
...
//nest the octree class here

class OcHull: public Octree<U, T, _Prd>
{
bool isSplit () ;
};

OcHull * GetOcHull() const ;

private:

OcHull * hullstructure ;

};

当我想访问 OcHull 中的 bounds 变量时,编译器看不到它有这个变量。

template <typename U, typename T, typename _Prd>
bool Hull<U,T,_Prd>::OcHull::isSplit()
{
assert(typeid(double) == typeid(T)) ;
// for each possible view of currect cell

for (size_t i = 0 ; i < camera_array.size() ; ++i)
{
//project centre of the cell

// bounds is not detected. bound is meant to be inherited from BBox<T,3,_Prd> bounds ; above

Vec<double,2> projectedP = camera_array[i].projectToCamPlane(bounds.centre) ;

...


}
}

错误是

Hull.hpp:84: error: ‘bounds’ was not declared in this scope

你能告诉我为什么它看不到边界吗?

最佳答案

你需要说this->boundsOctree<U, T, _Prd>::bounds .在 C++ 中,当一个类模板继承自另一个类模板时,模板基类不会在第一次编译过程中实例化,因此必须使用显式限定符访问继承的成员。

参见 this answer以获得更详细的解释。

关于c++ - 在模板化的嵌套和继承类中未检测到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13963215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com