sdu_2017_XY 2018-12-09 11:37 采纳率: 0%
浏览 430
已结题

对于类对父类私有成员变量的继承问题

对于一个父类,我声明了一些私有成员变量,并声明它的子类为父类的友元。在子类的方法中我用到了父类的变量,但编译器却告诉我没有声明。附上代码。

#include <iostream>
#include "Chain.h"

class LinkedDigraph;
template<class T>
class LinkedWDigraph;
template<class T>
class LinkedBase{
    friend LinkedDigraph;
    friend LinkedWDigraph<T>;
    public:
        LinkedBase(int Vertices=10){
            n=Vertices;
            e=0;
            h=new Chain<T>[n+1];
        }
        ~LinkedBase(){
            delete [] h;
        }
        int Edges() const{
            return e;
        }
        int Vertices() const{
            return n;
        }
        int OutDegree(int i) const{
            if(i<1||i>n) throw "wrong info";
            return h[i].length;
        }
        void InitializePos(){
            pos=new ChainIterator<T> [n+1];
        }
        void DeactivatePos(){
            delete []pos;
        }
    private:
        int n,e;
        Chain<T> *h;
        ChainIterator<T>* pos;
}; 
template<class T>
class LinkedWGraph;
template<class T>
class GraphNode{
    friend LinkedWDigraph<T>;
    friend LinkedWGraph<T>;
    friend Chain<T>;
    private:
        int vertex;
        T weight;
};
template <class T>
class LinkedWDigraph:public LinkedBase<GraphNode<T> >{//Note:两个右尖括号不能连续使用 
    public:
        LinkedWDigraph(int Vertices=10): LinkedBase<GraphNode<T> >(Vertices){}
        LinkedWDigraph<T>& Add(int i,int j,const T& w);
    protected:
        LinkedWDigraph<T>& AddNoCheck(int i,int j,const T&w);    
};
template<class T>
LinkedWDigraph<T>& LinkedWDigraph<T>::Add(int i,int j,const T& w){
    return AddNoCheck(i,j,w);
}
template<class T>
LinkedWDigraph<T>& LinkedWDigraph<T>::AddNoCheck(int i,int j,const T& w){
    GraphNode<T> x;
    x.vertex=j;
    x.weight=w;
    h[i].Insert(0,x);
    e++;
    return *this;
}

错误提示:69 2 C:\Users\dell\Documents\LinkedBase.cpp [Error] 'h' was not declared in this scope
70 2 C:\Users\dell\Documents\LinkedBase.cpp [Error] 'e' was not declared in this scope

  • 写回答

1条回答 默认 最新

  • weixin_44033255 2018-12-09 13:08
    关注

    第36行 private(私有):僅供父類別使用,子類別及外界不可取;試改為protected(保護):可供父類別及子類別使用,外界不可取。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题