Я пытаюсь просто использовать вектор в одном из моих классов. При попытке доступа к вектору он сообщает мне, что он не определен (но я определил его в своем заголовке).Определение вектора внутри пользовательского класса
У меня есть два класса, человек и собака. Человек может владеть одной или несколькими собаками, поэтому я хочу добавить каждую собаку, которой владеет человек, в массив. Это должно быть очень просто, так что эта проблема действительно начинает меня добираться. Вот код:
Класс Person.cpp:
#include "Person.h"
#include "stdafx.h"
#include <iostream>
using namespace std;
Person::Person(string name, string address, int age)
:name(name),
address(address),
age(age)
{}
int Person::getAge(){
return age;
}
std::string Person::getDogInfo(int index){
}
void Person::addDog(string dogName, string breed){
dogCollection.push_back(Dog(dogName, breed));
}
std::vector<Dog> getDogs(){
return dogCollection; //dogCollection undefined error here
}
А вот Person.h:
#ifndef Person_H
#define Person_H
#include <vector>
#include "Dog.h"
using namespace std;
class Person{
public:
Person(string name, string address, int age);
string getName(){return name};
string getAddress(){return address};
void addDog(string dogName, string breed);
string getDogInfo(int index);
std::vector<Dog> getDogs();
int getAge();
private:
string name;
string address;
int age;
std::vector<Dog> dogCollection;
};
#endif
Если вы хотите взглянуть на мои классы собак я приклеить их а также:
Dog.cpp:
#include "stdafx.h"
#include <iostream>
#include "dog.h"
Dog::Dog(string dogName, string breed)
:dogName(dogName),
breed(breed){}
std::string Dog::Dog.getDogName(){
return dogName;
}
std::string Dog::Dog.getBreed(){
return breed;
}
и Dog.h:
#ifndef Dog_H
#define Dog_H
#include <iostream>
using namespace std;
class Dog{
public:
Dog(std::string dogName, std::string breed);
std::string getDogName();
std::string getBreed();
private:
std::string dogName;
std::string breed;
};
#endif
Кроме того, я просто хочу добавить, что это не домашнее задание. Я привык к java, и я только пытаюсь изучить C++, так как мне это нужно для будущей работы.
EDIT: Обновлен код
Вы используете 'namespace std', а также квалификационный' vector' как 'std :: vector'. Что произойдет, если вы избавитесь от директивы 'use'? –
В качестве примечания: вы должны использовать [список инициализации] (http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6) в своем конструкторе. –
Держу пари, что это не первая ошибка, так как это не ошибка, и я вижу другие ошибки, которые должен показать первый компилятор. Исправьте первую ошибку (ошибки), и этот будет удален. А именно, ваши включения находятся в неправильных местах. –