CArray error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject'



  • Hallo Gemeinde,

    ich hab ein kleines Problem mit der Klasse CArray.
    Ich will ein kleines Programm schreiben in dem es einen Lieferanten gibt der 2 Adressen hat und unendlich viele Artikel hat.

    #ifndef _LIEFERANT_
    #define _LIEFERANT_
    #include "stdafx.h"
    #include <string>
    
    #include "Adresse.h"
    #include "Artikel.h"
    #include <afxtempl.h>
    #include <iostream>
    using namespace std;
    
    class Lieferant
    {
    private:
    	int Nr;
    	string Name;
    	Adresse addr[1];
    
    	CArray<Artikel,Artikel> liste;
    public:
    
    Lieferant();
    Lieferant(int n,string pname,Adresse p[],const CArray<Artikel,Artikel> vec);
    
    void print()const;
    //Getter und Setter Methoden hab ich jetzt mal rausgelöscht. 
    };
    
    #endif
    
    #include "stdafx.h"
    #include <string>
    #include "lieferant.h"
    #include "Adresse.h"
    #include "Artikel.h"
    #include <afxtempl.h>
    
    #include <iostream>
    using namespace std;
    
    Lieferant::Lieferant():Nr(1),Name("dummy")
    {
    	Adresse p[1]={Adresse()};
    	this->liste.Add(Artikel());
    }
    Lieferant::Lieferant(const Lieferant& p):Nr(p.getNr()),Name(p.getName())
    {
    	this->addr[0]=p.getRechnungsadresse();
    	this->addr[1]=p.getLieferadresse();
    }
    Lieferant::Lieferant(int n, std::string pname, Adresse p[],const CArray<Artikel,Artikel> vec):Nr(n),Name(pname)
    {
    	this->addr[0]=p[0];
    	this->addr[1]=p[1];
    	this->liste.Copy(vec);
    }
    void Lieferant::print() const
    {
    	cout << "Nr: " << this->getNr() <<"\n";
    	cout << "Name: " << this->getName() <<"\n";
    	cout << "Adresse: ";
    	cout << "Artikel: ";
    	if(this->liste.GetSize() >0)
    	{
    		for(int i=0;i<this->liste.GetSize();i++)
    		{
    			Artikel p=this->liste.GetAt(i);
    			p.print();
    		}
    	}
    	else 
    		cout << "0\n";
    
    }
    
    #include "stdafx.h"
    #include "lieferant.h"
    #include "Adresse.h"
    #include "Artikel.h"
    #include <afxtempl.h>
    
    int main(int argc, _TCHAR* argv[])
    {
    	Adresse plattling=Adresse();
    	Adresse adr[]={plattling};
    	Artikel a = Artikel();
    	CArray<Artikel,Artikel> arr=CArray<Artikel,Artikel>();
    	arr.Add(a);
    	Lieferant hans = Lieferant(1,"hans",adr,arr);
    
    	return 0;
    }
    

    Kann mir irgendwer sagen was ich da bitte falsch mache?

    Greetz Daniel



  • Ist Artikel zufälligerweise von CObject abgeleitet? Wenn ja - CObject ist nicht kopierbar (Copy-Ctor und operator= sind privat), also müsstest du die Kopier-Operationen selber überschreiben, um sie verwenden zu können.

    (PS: Dir ist hoffentlich klar, daß in Adresse addr[1]; nur ein Eintrag Platz hat - und daß die Definition Adresse p[1]={Adresse()}; im Ctor sinnlos ist)


Anmelden zum Antworten