我正在学习C++,我真的不明白如何通过函数传递对象。我读到有三种方法可以做到这一点。按值,参考和指针传递。我想我正在尝试引用?C++:试图了解通过引用向量传递
我敢肯定我有引用传递,因为我试图做
std::string nameInput = "Penguin";
std::string colorInput = "Black";
Animal temp(nameInput,colorInput);
zoo.addAnimal(temp);
zoo.printDatabase();
来测试它的主要不调用功能和它的作品了罚款的问题。但是当我尝试通过函数调用它时,我甚至无法将它添加到vector.Before发布之前,我尝试addAnimal(动物& toAdd),但我不知道什么是真正的事情。因为我不是在传递函数的地址吗?而不是对象动物本身。
或者我可能完全看错了方向。这就是为什么我喜欢张贴在这里,因为有另一双眼睛总是很好!
//Zoo.h
#include<vector>
#include<animal.h>
#ifndef ZOO_H_
#define ZOO_H_
class Zoo{
private:
std::vector<Animal> database;
public:
void addAnimal(animal toAdd);
void printDatabase();
};
#endif ZOO_H_
//Animal.h
#include<string>
#ifndef ANIMAL_H_
#define ANIMAL_H_
class Animal{
private:
std::string name;
std::string color;
public:
Animal(std::string name, std::string color);
void printInfo();
}
#endif ANIMAL_H_
//Zoo methods
void Zoo::printDatabase(){
for(std::vector<Animal>::iterator list = database.begin(); list != list.end(); list++){
(*list).printInfo();
}
}
void Zoo::addAnimal(Animal toAdd){
database.push_back(toAdd);
}
//Animal Methods
Animal::Animal(std::string inputName, std::string inputColor){
name = inputName;
color = inputColor;
}
void Animal::printInfo(){
std::cout << "Name: " << name << "\n";
std::cout << "Color: " <<color>> "\n";
}
//main.cpp
int main(){
Zoo zoo;
std::string input;
do{
printMenu();
std::getline(std::cin, input);
if(!input.empty()){
decide(input, zoo);
}
}while(input != "3";
}
void printMenu(){
std::cout <<"Zoo database\n";
std::cout << "1.Add Animal \n";
std::cout << "2.Print \n";
std::cout << "3.Exit \n";
}
void decide(std::string input, Zoo zooInput){
std::string name;
std::string color;
if(input == "1"){
std::cout << "Please enter the name of the animal to add \n";
std::getline(std::cin,name);
std::cout << "Please enter the color of the animal \n";
std::getline(std::cin,color);
Animal temp(name,color);
zooInput.addAnimal(temp);
}
if(input == "2"){
zooInput.printDatabase();
}
}
老实说,我永远都不会怀疑动物园是我的问题。谢谢!如果我有足够的声望,我会赞成! – user2677821