gpt4 book ai didi

c++ - 访问基类的公共(public)成员失败

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:22 26 4
gpt4 key购买 nike

这个问题可能有点懦弱:我有两个类,并且将所有变量声明为公共(public)的。为什么我不能访问派生类中的变量??

g++ 告诉我:vec3d.h:76:3: error: ‘val’ was not declared in this scope

template<typename TYPE>
class vec{
public:
TYPE *val;
int dimension;
public:
vec();
vec( TYPE right );
vec( TYPE right, int _dimension );

[etc]


template<typename TYPE>
class vec3d : public vec<TYPE>{
public:
vec3d() : vec<TYPE>( 0, 3 ){};
vec3d( TYPE right ) : vec<TYPE>( right, 3 ){};
vec3d( TYPE X_val, TYPE Y_val, TYPE Z_val ) : vec<TYPE>( 0, 3 ){
val[0] = X_val; //// <----------THIS ONE FAILS!
val[1] = Y_val;
val[2] = Z_val;
};
[etc]

最佳答案

这纯粹是一个查找问题,与访问控制无关。

因为vec3d是一个模板,它的基类依赖于模板参数,所以基类的成员在非依赖表达式中的派生类中不会自动可见。最简单的解决方法是使用依赖表达式(例如 this->X_val)来访问基类的成员。

关于c++ - 访问基类的公共(public)成员失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7281072/

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