我目前正在学习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()函数中的变量名称都不会突出显示所以我猜测这与指针有关...我可能错了虽然...
答案 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;