我是第一门C ++课程的大学生。我需要一些有关当前作业的帮助。
我要实现的目标是创建一个新对象(Rabbit
),并从Rabbit> Mammal> Animal传递名称pete
,以在此处进行私人设置并稍后引用(指针将在以后被引用以打印出名称)。
string pete;
Rabbit* RabbitP = new Rabbit(pete);
我这样拥有Rabbit
的头文件:
#include <string>
class Rabbit :
public Mammal
{
public:
Rabbit(std::string tempname) : Mammal(tempname){ }
Rabbit();
~Rabbit();
我正在尝试使用初始化列表将Rabbit
的名称传递给Mammal
,然后从那里传递给Animal
。在Mammal
和Animal
标头中,我这样:
#include <string>
class Mammal :
public Animal
{
public:
Mammal(std::string tempname) : Animal(tempname) {}
Mammal();
~Mammal();
};
#include <string>
class Animal // BASE
{
private:
std::string aName;
public:
Animal(std::string tempname);
Animal();
~Animal();
包含该功能的Animal.cpp
是:
#include <iostream>
#include <string>
using namespace std;
Animal::Animal()
{
}
Animal::~Animal()
{
}
Animal::Animal(string tempname)
{
aName = tempname;
}
void Animal::Breathe()
{
std::cout << "Takes a deep breath." << std::endl;
}
void Animal::Move()
{
std::cout << "Jiggle your limbs around" << std::endl;
}
string Animal::GetName(Animal*)
{
return aName;
}
使用Visual Studio中的调试器,我可以看到它正在正确地向上移动构造函数,但是没有传递任何东西。感觉我在正确的道路上,但是我想念的是什么?
答案 0 :(得分:2)
string pete;
这将调用string
默认构造函数并创建一个空字符串。现在,变量pete
中有一个空字符串。
Rabbit* RabbitP = new Rabbit(pete);
这将创建一个新的Rabbit,调用构造函数并传递一个空字符串。您应该期望将Animal
中的名称设置为""
。
如果您希望名称为“ Pete”,请调用它并传递字符串“ Pete”。如果您不使用指针(在这里看起来不需要),则将如下所示:
Rabbit RabbitP("Pete");