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 DefinitionAdresse p[1]={Adresse()};
im Ctor sinnlos ist)