Я пытаюсь использовать заголовочные файлы и их исходные файлы, но когда я пытаюсь получить доступ к классам внутри них, у меня возникает небольшая проблема, вот код для моего заголовочного файла:
// person.h
namespace PersonFuncs
{
class Person;
void getValues ( Person& );
void setValues ( Person& );
}
И мой исходный файл заголовков:
// person.cpp
#include <iostream>
#include <string>
#include "person.h"
using namespace std;
namespace PersonFuncs
{
class Person
{
private:
string name; // Declaring string variable to hold person's name
int height; // Declaring integer variable to hold person's height
public:
string getName() const; // Reads from 'name' member variable
void setName ( string ); // Writes to the 'name' member variable
int getHeight() const; // Reads from the 'height' member variable
void setHeight ( int ); // Writes to the 'height' member variable
};
string Person::getName() const
{
return name;
}
void Person::setName ( string s )
{
if ( s.length() == 0 ) // If user does not input the name then assign with statement
name = "No name assigned";
else // Otherwise assign with user input
name = s;
}
int Person::getHeight() const
{
return height;
}
void Person::setHeight ( int h )
{
if ( h < 0 ) // If user does not input anything then assign with 0 (NULL)
height = 0;
else // Otherwise assign with user input
height = h;
}
void getValues ( Person& pers )
{
string str; // Declaring variable to hold person's name
int h; // Declaring variable to hold person's height
cout << "Enter person's name: ";
getline ( cin, str );
pers.setName ( str ); // Passing person's name to it's holding member
cout << "Enter height in inches: ";
cin >> h;
cin.ignore();
pers.setHeight ( h ); // Passing person's name to it's holding member
}
void setValues ( Person& pers )
{
cout << "The person's name is " << pers.getName() << endl;
cout << "The person's height is " << pers.getHeight() << endl;
}
}
Из которых оба компилируются без ошибок вообще!Но с приведенным ниже фрагментом кода, где, как вы, вероятно, видите, я пытаюсь использовать класс Person:
// Person_Database.cpp
#include <iostream>
#include "person.h"
using namespace std;
using namespace PersonFuncs
int main()
{
Person p1; // I get an error with this
setValues ( p1 );
cout << "Outputting user data\n";
cout << "====================\n";
getValues ( p1 );
return 0;
}
Ошибка компилятора (MS Visual C ++), которую я получаю:1011 *
и
setValues cannot convert an int
getValues cannot convert an int
или что-то в этом роде.
У кого-нибудь есть идеи в том, что я сделал неправильно?или есть определенный способ доступа к переменным в классе?