将成员从公共变为私人

时间:2016-06-14 08:53:09

标签: c++ object dynamic

我对以下代码有疑问。它的想法是使用“<<”和“>>”操作员输入和打印不同的值。我的问题是 - 如何将anzahlzahlen成员设为私有而非公开?如果我只是在私有中键入它们,我就不能将它们用于类之外的方法。我还可以在代码中修改一些内容以使其更好吗?

#include <iostream>
#include <cmath>

using namespace std;

class Liste{

public:
int anzahl;
int * zahlen;
Liste (){
cout <<"Objekt List is ready" << endl;
anzahl = 0;
}
~Liste(){
cout <<"Objekt destroyed" << endl;
delete (zahlen);
}
void neue_zahlen(int zahl){

if(zahl == 0){ return;}

if(anzahl == 0){

    zahlen = new int[anzahl+1];
    zahlen[anzahl] = zahl;
    anzahl++;
    }
    else{

    int * neue_zahl = new int[anzahl+1];
        for(int i = 0; i < anzahl; i++){
            neue_zahl[i] = zahlen[i];
        }
    neue_zahl[anzahl] = zahl;
    anzahl++;

    delete(zahlen);
    zahlen = neue_zahl;
    }  

    }
    };






 // Liste ausgeben

ostream& operator<<(ostream& Stream, const Liste &list)
{
 cout << '[';
    for(int i=0; i < list.anzahl; i++){

            cout << list.zahlen[i];
    if (i > (list.anzahl-2) {
        cout << ',';
    }
        }
    cout << ']' << endl;

return Stream;
}


//Operator Liste einlesen

istream& operator>>(istream&, tBruch&){

cout<< 

 }




int main(){

Liste liste; //Konstruktor wird aufgerufen
int zahl;
cout <<"enter the numbers" << endl;
do{
      cin >> zahl;
      liste.neue_zahlen(zahl);

    }while(zahl);


  cout<<liste;

   }

1 个答案:

答案 0 :(得分:0)

非会员功能无法加入私人会员。您可以operator<< friend

class Liste{
    friend ostream& operator<<(ostream& Stream, const Liste &list);
    ...
};

或为其添加成员函数:

class Liste{
    public:
    void print(ostream& Stream) const {
        Stream << '[';
        for (int i=0; i < list.anzahl; i++) {
            Stream << list.zahlen[i];
            if (i > (list.anzahl-2) {
                Stream << ',';
            }
        }
        Stream << ']' << endl;
    }
    ...
};

然后从operator<<

调用它
ostream& operator<<(ostream& Stream, const Liste &list)
{
    list.print(Stream);
    return Stream;
}

顺便说一句:您应该在Stream中使用operator<<,而不是cout