需要帮助打印出一个字符串

时间:2014-12-16 16:31:57

标签: c++

我目前正在学习C ++中的类。我来自java语言背景。

我有一个叫动物的课。 animals构造函数有一个参数,其中需要一个字符串。当我创建该类的对象并尝试打印出传递给构造函数的字符串时,它不会打印出除新行之外的任何内容。

动物类

    #include "animal.h"
#include <string>
#include <iostream>
using namespace std;


animal::animal(string nameofanimal)
{

    string name = nameofanimal;
}

void animal::getName(){
    cout << name << endl;
}

ANIMAL HEADER:

#pragma once
#ifndef ANIMAL_H
#define ANIMAL_H
#include <string>
#include <iostream>
using namespace std;


class animal
{

private:
    string name;

public:
    animal(string x);
    void getName();


};

#endif ANIMAL_H

MAIN CLASS

#include "animal.h"
#include <string>
#include <iostream>
using namespace std;



int main()
{
    animal firstAnimal("Bob");
    firstAnimal.getName();

}

输出什么都没有。这是一个非常基本的代码,老实说不能相信我不知道如何做这么简单的任务。我注意到的是,每当我在动物构造函数中突出显示名称varible时,getName()函数中的变量名称都不会突出显示所以我猜测这与指针有关...我可能错了虽然...

2 个答案:

答案 0 :(得分:2)

按如下所示更改animal构造函数定义

animal::animal(string nameofanimal) : name(nameofanimal) {
}

在原始定义中,您有一个局部变量name,它隐藏了类成员变量:

animal::animal(string nameofanimal)
{    
    string name = nameofanimal; // <<< This sets only the local variable
}

答案 1 :(得分:2)

问题是你在本地变量中存储值

string name = nameofanimal;

虽然该值未存储在类的实际数据成员中。要将其存储在数据成员中,请使用以下命令:

name = nameofanimal;