为什么我的指针' pTwo'在main()中返回函数的一半(名称' fiddo' )但是对于看起来是数字19的整数的年龄返回0?
* Dog pTwo = new Dog(" Fiddo",19);
下面我有一些正常工作的对象......比如SetDogName和SetAge
Getage()是否是合适的会员?它返回'此' - >年龄
#include <iostream>
#include <string>
class Dog {
private:
std::string aDogName;
int age;
public:
Dog(); //constructor
Dog(std::string dogName, int age);
~Dog(); //destructor
void SetDogName(std::string dogName); //setter
std::string GetDogName(); //getter
void SetAge(int age);
int Getage(); //integer function
void SayHello();
};
class Person {
public:
Person();
~Person();
void SayHello();
};
/////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
Dog::Dog() { //dog constructor
}
Dog::Dog(std::string dogName, int age) {
aDogName = dogName;
age = age;
}
Dog::~Dog() { //dog destructor
}
void Dog::SetDogName(std::string dogName) {
this->aDogName = dogName;
}
std::string Dog::GetDogName() {
return this->aDogName;
}
void Dog::SetAge(int age) {
this->age = age;
}
int Dog::Getage() {
return this->age;
}
void Dog::SayHello() {
std::cout << "Woof!" << std::endl;
}
/////////////////////////////////////////////////
/////////////////////////////////////////////////
Person::Person () {
}
Person::~Person()
{
}
void Person::SayHello() {
std::cout << "Hello." << std::endl;
}
/////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
int main()
{
Dog *pTwo = new Dog("Fiddo", 19);
std::cout << pTwo->GetDogName() << std::endl;
std::cout << pTwo->Getage() << std::endl;
Dog d;
Person p;
d.SetDogName("Puppy");
std::cout << d.GetDogName() << std::endl;
d.SetAge(16);
std::cout << d.Getage() << std::endl;
p.SayHello();
d.SayHello();
}
答案 0 :(得分:3)
age = age;
你的问题就在这里。参数age
遮盖了成员变量,因此您只需将参数设置为自身。
使用字段初始化列表,重命名参数或使用this->
*指定要解决此问题的成员:
Dog::Dog(std::string dogName, int age) : aDogName(dogName), age(age) { }
*感谢@DrewDormann!