Partage
  • Partager sur Facebook
  • Partager sur Twitter

private vector error

"vector" Private member of "Class"

Sujet résolu
    27 septembre 2016 à 7:58:37

    j ai deux class, chaqu une dans un Header.

    l'une des class contient a vector Private. mais a chaque fois que j essaye de l appeler j ai le message d'erreur

    "..." is a private member of "..."

    j ai esseille d'utilise "friend" entre les deux class, mais ca marche toujours pas ! 

    • Partager sur Facebook
    • Partager sur Twitter
      27 septembre 2016 à 8:13:36

      Il faut le code aussi...

      Ou la boule magique, à toi de voir

      • Partager sur Facebook
      • Partager sur Twitter
        27 septembre 2016 à 8:52:13

        Contact.cpp

        #include "ContactList.h"
        #include <iostream>
        #include <fstream>
        #include <string>
        
        using namespace std;
        Contact::Contact(const string& myFname, const string& myLname, const string& myPhone, const string& myAddress, const string& myCity, const string& myState){
        	fname = myFname;
        	lname = myLname;
        	phone = myPhone;
        	address = myAddress;
        	city = myCity;
        	state = myState;
        	
        }
        
        //Function 
        //Add Contact function
        void Contact::addContact(){
        		string fn, ln, ph, ad, ci, st;
        
        			cout<<"\tFirst Name :> ";
        					getline(cin,fn);
        			cout<<"\tLast Name :> ";
        					getline(cin,ln);
        			cout<<"\tPhone # :> ";
        					getline(cin,ph);
        			cout<<"\tAddress :> ";
        					getline(cin,ad);
        			cout<<"\tcity :> ";
        					getline(cin,ci);
        			cout<<"\tstate :> ";
        					getline(cin,st);
        		
        				fname	= fn;
        				lname	= ln;
        				phone	= ph;
        				address	= ad;
        				city	= ci;
        				state	= st;
        				
        			ContactList::myList.push_back(Contact::Contact(fname,lname,phone,address,city,state));
        }
        //ostream operator
        ostream& operator<<(ostream& out, Contact& str){
        	
        		out<<str.getFirstName()<<" "<<str.getLastName()<<"\tPhone Number: "<<str.getPhone()<<endl;
        		out<<str.getAddress()<<endl;
        		out<<str.getCity()<<", "<<str.getState()<<endl;
        	
        	return out;
        }
        
        //Modify contact
        bool Contact::modifyContact(bool modified){
        	cout<<"\tModify part is here !!! "<<endl;
        	string fn, ln, ph, ad, ci, st;
        	
        	if(Contact::fname.empty() && Contact::lname.empty() && Contact::phone.empty()){
        			cout<<"\tContact List Empty!!! "<<endl;
        		return modified;	
        	}
        	else{
        	
        			cout<<"\tFirst Name :> ";
        					getline(cin,fn);
        			cout<<"\tLast Name :> ";
        					getline(cin,ln);
        			cout<<"\tPhone # :> ";
        					getline(cin,ph);
        			cout<<"\tAddress :> ";
        					getline(cin,ad);
        			cout<<"\tcity :> ";
        					getline(cin,ci);
        			cout<<"\tstate :> ";
        					getline(cin,st);
        		
        		if(!fn.empty())
        				Contact::setFirstName(fn);
        		if(!ln.empty())
        				Contact::setLastName(ln);
        		if(!ph.empty())
        				Contact::setPhone(ph);
        		
        		if(!ad.empty())
        				Contact::setAddress(ad);
        		if(!ci.empty())
        				Contact::setCity(ci);
        		if(!st.empty())
        				Contact::setState(st);
        		
        		if(fn.empty() && ln.empty() && ph.empty() && ad.empty() && ci.empty() && st.empty())
        			cout<<"\tContact had not been modified"<<endl;
        			
        		else
        			modified = !modified;
        		}
        		return modified;
        }
        
        //Accessor Setters
        void Contact::setFirstName(string sFname){
        	Contact::fname = sFname;
        }
        void Contact::setLastName(string sLname){
        	Contact::lname = sLname;
        }
        void Contact::setPhone(string sPhone){
        	Contact::phone = sPhone;
        }
        void Contact::setAddress(string sAddress){
        	Contact::address = sAddress;
        }
        void Contact::setCity(string sCity){
        	Contact::city = sCity;
        }
        void Contact::setState(string sState){
        	Contact::state = sState;
        }
        //Accessor Getters
        string Contact::getFirstName(){
        	return Contact::fname;
        }
        string Contact::getLastName(){
        	return Contact::lname;
        }
        string Contact::getPhone(){
        	return phone;
        }
        string Contact::getAddress(){
        	return address;
        }
        string Contact::getCity(){
        	return city;
        }
        string Contact::getState(){
        	return state;
        }


        Contact.h

        #ifndef CONTACT_H
        #define CONTACT_H
        
        #include <iostream>
        #include <vector>
        
        using namespace std;
        
        class Contact{
        	public:  
        		//Constructors
        		Contact(const string& fname, const string&  lname, const string&  phone, const string&  address, const string&  city, const string&  state);
        		Contact(const string&  fname, const string&  lname);
        		
        		//Functions
        		void addContact();
        		bool modifyContact(bool modified);
        		
        		//Accessor
        		void setFirstName(string fname);
        		void setLastName(string lname);
        		void setPhone(string phone);
        		void setAddress(string address);
        		void setCity(string city);
        		void setState(string state);
        		string getFirstName();
        		string getLastName();
        		string getPhone();
        		string getAddress();
        		string getCity();
        		string getState();
        		
        		//ostream Operator
        		friend ostream& operator<<(ostream& out, Contact& str);
        		friend class ContactList;
        
        	private:
        		//Variables
        		string fname;
        		string lname;
        		string phone;
        		string address;
        		string city;
        		string state;
        };
        #endif

        ContactList.h

        #ifndef CONTACTLIST_H
        #define CONTACTLIST_H
        
        #include "Contact.h"
        using namespace std;
        
        class ContactList{
        
        	public:
        		ContactList(Contact);
        		
        	private:
        		string fname;
        		string lname;
        		string phone;
        		string address;
        		string city;
        		string state; 
        		vector <Contact> myList;
        	
        };
        
        #endif



        • Partager sur Facebook
        • Partager sur Twitter
          27 septembre 2016 à 9:21:37

          • On est pas en java, on utilise la liste d'initialisation dans le constructeur
          • Pas de using namespace dans un header
          • Je ne sais pas pourquoi tu préfixe le nom de la classe dans tes setters
          • Les operator<< devraient prendre le contact en const référence

          Sinon, je pense qu'il manque l'erreur complète.

          • Partager sur Facebook
          • Partager sur Twitter

          git is great because Linus did it, mercurial is better because he didn't.

          private vector error

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown