Member Avatar for Rearden

Hello. I'm learning C++ out of Sams Teach Yourself C++ in 24 Hours and Accelerated C++ Practical Programming by Example. I've heard these are both good references. Anyway, I just learned about classes and I was wondering how one makes an array of class objects. here is the Cat class I made (no, not exactly the same as the one from the book, but just about :mrgreen: . . .

class Cat { private: int itsage; std::string itsname; public: void setage(int age); int getage(); void meow(); void setname(std::string name); std::string getname(); }; //setage sets the cat's age void Cat::setage(int age) { itsage = age; } //returns the cat's age int Cat::getage() { return itsage; } //meow has the cat meow void Cat::meow() { std::cout << "Meow\n"; } //setname sets the cat's name void Cat::setname(std::string name) { itsname = name; } //getname returns the cat's name std::string Cat::getname() { return itsname; }

I think that I have the right method for initializing the array. I am doing Cat pack [8];

however. I think I'm doing it wrong when trying to call a Cat member function to a Cat object in the array. I tried pack.at(0).setage(4); which turned up a lot of errors.

Is this something that can only be accomplished using pointers? I haven't learned enough about pointers yet to do that. If it requires a pointer, I understand and will wait until I learn more, i'd just like to know. Thanks in advance.

-Matt

Member Avatar for jhdobbins

try this.... pack[0].setage(4);

arrays start out at 0 and go up... if you declared pack[8] the elements go from 0-7. and when you use arrays you have to include the [?] where you use it at with ? being the position you want to use.

Member Avatar for Rashakil Fol

The pack.at(0) behavior is of standard library vectors, not arrays.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.