Пишу текстовую игру. Перенес общие функции в другой класс и возникла ошибка. Как исправить? Вот какая ошибка.
main.cpp: In function ‘int main(int, char**)’:
main.cpp:13:47: error: ‘void Living::set_pos(Map*)’ is inaccessible within this context
player.set_pos ( map->find_map_coord ( 'D' ) );
^
In file included from Player.h:3,
from main.cpp:4:
Living.h:11:8: note: declared here
void set_pos ( Map *pos );
^~~~~~~
main.cpp:13:47: error: ‘Living’ is not an accessible base of ‘Player’
player.set_pos ( map->find_map_coord ( 'D' ) );
^
make: *** [makefile:2: all] Error 1
Вот main.cpp
#include <iostream>
#include <cstdio>
#include "Loader.h"
#include "Player.h"
int main(int argc, char **argv)
{
Loader loader;
loader.load ( "map" );
Map *map = loader.get_map ( );
map->set_sizes ( loader.width, loader.height );
Player player;
player.set_pos ( map->find_map_coord ( 'D' ) );
return 0;
}
Вот living.h
#ifndef __living__
#define __living__
#include "Map.h"
#include <cstring>
class Living {
protected:
Map *pos;
char *name;
public:
void set_pos ( Map *pos );
void set_name ( const char *name );
void walk_north ( );
void walk_west ( );
void walk_south ( );
void walk_east ( );
};
#endif
Вот living.cpp
#include "Living.h"
void Living::set_name ( const char *name )
{
int length = strlen ( name );
this->name = new char [ length + 1 ];
strncpy ( this->name, name, length );
this->name [ length ] = 0;
}
void Living::walk_north ( )
{
if ( pos->north->get_place ( ) == '*' ) {
}
pos = pos->north;
}
void Living::walk_west ( )
{
}
void Living::walk_south ( )
{
}
void Living::walk_east ( )
{
}
void Living::set_pos ( Map *pos )
{
this->pos = pos;
}
Вот player.h
#include <string.h>
#include "Map.h"
#include "Living.h"
class Player : Living {
};
У class
-ов родители по умолчанию приватные. Естественно, что вы не можете получить доступ к методам private
родителя.
Нужно вот так:
class Player : public Living {};
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Сложить 50 чиселЕсли сложение не удалось то написать сообщение об ошибке
Как передать аргумент функции в std::thread по ссылке? Хоть моя функция принимает параметр по ссылке, но похоже, что объекты всё равно разные
Пытаюсь создать нейронную сеть xor с backpropagationВсе формулы подобрал правильно, но после обучения ответ при любом входе равен ~0