ccvvpp 发表于 2014-12-31 15:10:57

类模板的私有静态变量怎么在main函数中调用?

#include<iostream>
using namespace std;
template<typename T>
class myArray
{
public:
      myArray(int s);
      myArray (const myArray& theArray);
      ~myArray();
      T& operator[](int index);
      myArray& operator=(const myArray& array);
      void Add();
      static T& mean();
private:
      int size;
      T* pelement;
      static int num;
      static T sum;
};
template<typename T> int myArray<T>::num = 0;
template<typename T> T myArray<T>::sum;
template <typename T>
myArray<T>::myArray(int s)
{
      size = s;
      num +=size;
      pelement = new T;
}
template <typename T>
myArray<T>::myArray(const myArray& theArray)
{
      size = theArray.size;
      pelement = new T;
      for(int i=0;i<size;i++)
                pelement = theArray.pelement;
}
template<typename T>
myArray<T>::~myArray()
{
      delete[] pelement;
}
template<typename T>
T& myArray<T>::operator[](int index)
{
      if(index<0||index>size)
                throw out_of_range("out of range");
      return pelement;
}
template<typename T>
myArray<T>& myArray<T>::operator=(const myArray& array)
{
      if(&array==this)                              
      return *this;
      size = array.size;
      if(pelement) delete[] pelement;      
      pelement = new T;
      for(int i=0;i<size;i++)      
                pelement = array.pelement;                        
}
template<typename T>
void myArray<T>::Add()
{
      for(int i=0;i<size;i++)
                sum += pelement;
}
template<typename T>
T& myArray<T>::mean()
{
      T m = sum/num;
      return m;
}
void main()
{
      myArray<double> d1(5);
      for(int i=0;i<5;i++)
                d1 = i*i;
      d1.Add();
      myArray<double> d2(4);
      for(i=0;i<4;i++)
                d2 = i;
      d2.Add();
      cout<<"mean is:"<<myArray<double>::mean()<<endl;
}

运行结果是:
mean is:4

请教一下,为什么不能在main函数内直接用类调用sum和num?
比如像“      cout<<"num is:"<<myArray<int>::num<<endl;”(系统会报错)

仰望天上的光 发表于 2014-12-31 20:33:38

如果可以的话,私有有没有任何意义了

?Цtm 发表于 2015-1-18 17:04:14

本帖最后由 ?Цtm 于 2015-1-18 17:34 编辑

#include<iostream>
class myArray
{
public:
    int getnum()
    {
      return num;
    }
    int getsum()
    {
      return sum;
    }
    void setnum(int i)
    {
      num = i;
    }
    void setsum(int i)
    {
      sum = i;
    }
private:
    int num;//类私有成员变量
    int sum;
};

int main()
{
    myArray my;
    int x=100,y=200;
    my.setnum(x);//私有成员变量赋值
    my.setsum(y);
    std::cout << my.getnum();//私有成员变量读取
    std::cout << std::endl;//换行
    std::cout << my.getsum();
    std::cin >> x;//等待用户输入避免程序退出
    return 0;
}
类私有变量没办法直接访问
页: [1]
查看完整版本: 类模板的私有静态变量怎么在main函数中调用?