[prog] Re: C++

Kathryn Hogg kjh at flyballdogs.com
Sat Mar 13 23:52:25 EST 2004


wolf said:
> this is the current version I'm trying to get working:
> #include <iostream>
>   using namespace std;
>
> class cd {
>   private:
> 	     char artist[30];
> 	     char title[50];
> 	     int yr;
> 	     char genre[10];
>
> public:
> 		 cd();  // construct a new blank CD.
> 	     void getdata(void);
> 	     //void showdata(void);  // probably show data and put data are
> the same thing
> 								// I sugest that you get rid of this.
> 	     void putdata(void);
> 	 };
>
>
> //***********************
>
> class cdlib {
> 	 int main()

I don't think you want main() inside of a class;


> 	 {
> 		cd rack[10]; // some place to keep 10 CDs
>
> 			for(int i=0; i<10; i++)
> 			{
> 				rack[i] = new cd();    // create a new CD

new is for allocating a object in the heap and it returns a pointer.

In this case that would be "cd *".

When you create the local variable rack above.  the compiler creates an
array of 10 cd objects and then goes through each one can calls the
default constructor for it.

So your attempt to initialize rack[i] is unnecessary.

> 				rack[i].getdata();        // fill it with data
> 				rack[i].putdata();        // print out the data to confirm its
> right.
> 			} // for
> 		for(int i=0; i<10; i++)
> 		{
> 			rack[i].putdata();        // print out the data to confirm its right.
> 		} // for
> 		     return 0;
> 		 } // main
>
> };
> 	//********
>
> 	void getdata()

Should be void cd::getdata() since its a member function of class 'cd'

> {
> 		/* get the data from the user and write it down to a text file. use
> cin */
> 		cout << "Enter the Artist's Name: "<< endl;
> 		cin.getline >> artist;
> 		cout << "Enter the Compact Disk Title: " << endl;
> 		cin.getline >> title;
> 		cout << "Enter the Year the CD was recorded: "<< endl;
> 		cin >> yr;
> 		cout << "Enter the genre for this CD: " << endl;
> 		cin.getline >> genre;
> }
>
> void putdata()

Should be void cd::putdata()

> {
> 	cout << artist << endl;
> 	cout << title << endl;
> 	cout << yr << endl;
> 	cout << genre << endl;
> }
>
> these are the errors that print out when I try to compile the program
> from a terminal session:
> Compiling...
> cd.cpp:22: warning: all member functions in class `cdlib' are private
> cd.cpp: In member function `int cdlib::main()':
> cd.cpp:29: error: no match for `cd& = cd*&' operator
> cd.cpp:4: error: candidates are: cd& cd::operator=(const cd&)
> cd.cpp: In function `void getdata()':
> cd.cpp:47: error: `artist' undeclared (first use this function)
> cd.cpp:47: error: (Each undeclared identifier is reported only once for
>     each function it appears in.)
> cd.cpp:49: error: `title' undeclared (first use this function)
> cd.cpp:51: error: `yr' undeclared (first use this function)
> cd.cpp:53: error: `genre' undeclared (first use this function)
>

-- 
Kathryn
http://womensfootyusa.com


More information about the Programming mailing list