Я пытаюсь создать простой проект для изучения файлов заголовков и наследования в C++. Я создал файл заголовка:Как создать унаследованный класс из класса из заголовка в C++
Bot.h
#include <vector>
#include <string>
#include <cstdlib>
using namespace std;
class Bot {
public:
Bot();
~Bot();
bool initialized;
string getRandomMessage();
string getName();
protected:
vector<string> messages;
string name;
};
Тогда я Bot.cpp
, где у меня есть
/**
*
* @return random message from Bot as string
*/
string Bot::getRandomMessage() {
int r = static_cast<double> (std::rand())/RAND_MAX * this->messages.size();
return messages[r];
}
/**
*
* @return bot's name as string
*/
string Bot::getName() {
return this->name;
}
И теперь я не могу понять, как разделить на заголовок и CPP файл и способы обработки включений и других материалов, чтобы все это работало в моем унаследованном классе, которое я выполнил следующим образом:
/**
* Specialized bot, that hates everything and everybody.
*/
class GrumpyBot : public Bot {
public:
GrumpyBot();
};
/**
* Default constructor for GrumpyBot
*/
GrumpyBot::GrumpyBot() {
initialized = true;
this->name = "GrumpyBot";
messages.push_back("I hate dogs.");
messages.push_back("I hate cats.");
messages.push_back("I hate goats.");
messages.push_back("I hate humans.");
messages.push_back("I hate you.");
messages.push_back("I hate school.");
messages.push_back("I hate love.");
}
Когда я использовал все это в одном файле, он работал хорошо, но я не думаю, что это хорошая практика, и я хочу это изучить. Если бы кто-нибудь мог помочь, я был бы рад.
что случилось с вашим кодом сейчас? какую ошибку вы получаете? – pinkpanther
'Bot' нужен« виртуальный »деструктор. И вы не должны «использовать namespace std', * специально * в заголовках. – juanchopanza