感谢您抽出宝贵时间查看我的问题。我花了很多时间寻找但却找不到解决这个问题的方法:
我有一个Person类及其各自的Header文件Person.h。 cpp类很难理解变量name,age和iq是什么。
//Person.cpp
/*
Makes a person.
A person has a name, an age, and an IQ level.
We will create many of these objects within other classes.
*/
#include "Person.h"
Person::Person() //Empty constructor
{
}
Person::Person(string thename, int theage, int theiq)
{
name = thename;
age = theage;
iq = theiq;
}
string getName()
{
return name; //Error: identifier "name" is undefined
}
int getAge()
{
return age; //Error: identifier "age" is undefined
}
int getIq()
{
return iq; //Error: identifier "iq" is undefined
}
void setName(string aName)
{
name = aName; //Error: identifier "name" is undefined
}
void setAge(int aAge)
{
age = aAge; //Error: identifier "age" is undefined
}
void setIq(int aIq)
{
iq = aIq; //Error: identifier "iq" is undefined
}
标题文件
//=================================
// include guard
#ifndef __PERSON_H_INCLUDED__
#define __PERSON_H_INCLUDED__
//=================================
// forward declared dependencies
//=================================
// included dependencies
#include <string> //For the name
//=================================
using namespace std;
class Person
{
public:
Person(); //Default constructor
Person(string thename, int theage, int theiq); //Constructor
string getName();
int getAge();
int getIq();
void setName(int aName);
void setAge(int aAge);
void setIq(int aIq);
private:
string name;
int age, iq;
};
#endif //__PERSON_H_
SURELY 我没有在Person.cpp中定义变量吗?它已经确切地知道变量name,age和iq是什么,因为它已经看到了头文件。为什么它不能理解这些变量是什么?
如果我这样做,或者有任何我想念的东西,请务必为我拼出来。我几乎不是一个中级C ++程序员,所以我可能听不懂行话。甚至像范围,继承和定义这样的事情都在我脑海中浮现。
感谢您的时间。
答案 0 :(得分:1)
您遇到错误的部分是这样做的: 返回类型 Person :: 函数名称(参数)
用于声明部分的功能。
例如,对于 getAge 函数,请执行以下操作:
int Person::getAge() {
return age;
}
您遇到错误的原因是:
修复后会发生什么:
答案 1 :(得分:0)
您需要更改
string getName()
到
string Person::getName()
<。>在.cpp文件中。与其他人一样。编译器需要知道这是Person类的一部分。
答案 2 :(得分:0)
你的功能
string getName()
{
return name; //Error: identifier "name" is undefined
}
未定义类成员函数。相反,你正在声明和定义一个(完全不同的和无关的)自由函数。因此,name
在此函数的范围内未定义。