Создание отдельных файловых функций класса, которые принимают параметры C ++

0

Довольно простой вопрос, но я не мог найти ответа на этот конкретный вопрос, который меня удивил.

Я получаю строку ошибок при попытке вызвать функцию класса, которая изменяет строку частного класса.

Изменение: я решил проблему - я забыл включить требуемое пространство имен и ссылки на сборки в файл заголовка.

Вот код файла.h:

#ifndef ANIMAL_H
#define ANIMAL_H

class Animal
{
public:
    Animal();
    ~Animal();
    string getName();
    void setName(string animalName);
private:
string name;
};

#endif

вот класс.cpp:

#include "Animal.h"
#include <iostream>
#include <string>
#include <conio.h>

using namespace std;

Animal::Animal()
{

}


Animal::~Animal()
{
}

void Animal::setName(string animalName)
{
name = animalName;
}

string Animal::getName()
{
return name;
}

наконец, вот int main(), где я попытался вызвать функции (я просто получил кучу ошибок при компиляции)

int main()
{
Animal chicken;

chicken.setName("gary");

cout << chicken.getName() << endl;

_getch();
}

Сообщения об ошибках включают:

error C2061: syntax error: identifier 'string'

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

'error C2146: syntax error : missing ';' before identifier 'getName''   
  • 0
    Какие ошибки вы получаете?
  • 0
    Вы забыли сказать, что такое код (ы) ошибок и сообщения (я) об ошибках, и в какой строке (ах) они происходят.
Показать ещё 1 комментарий
Теги:

2 ответа

1
Лучший ответ

Похоже, вы забыли включить <string> в свой заголовок. Строковый объект также живет в пространстве имен std поэтому вам нужно предоставить полное имя для его использования (не добавляйте, using namespace в заголовки).

#ifndef ANIMAL_H
#define ANIMAL_H
#include <string>  // You need to include this

class Animal
{
public:
    Animal();
    ~Animal();
    std::string getName();
    void setName(std::string animalName);
private:
    std::string name;
};

#endif
0

В заголовке класса отсутствует объявление библиотеки строк и std :: перед каждым объявлением строки.

#ifndef ANIMAL_H
#define ANIMAL_H

#include <string>

class Animal
{
public:
    Animal();
    ~Animal();
    std::string getName();
    void setName(std::string animalName);
private:
std::string name;
};

#endif

@edit Up

Ты подтолкнул меня на это! Ваш ответ появился, только когда я опубликовал свой

Ещё вопросы

Сообщество Overcoder
Наверх
Меню