Форум программистов, компьютерный форум CyberForum.ru

Вызов метода производного класса через обращение к методу базового класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как при рекурсии не обнулять http://www.cyberforum.ru/cpp-beginners/thread706723.html
void List::RecRevers() { ListItem *tmp, *ptr = NULL, *start = first; tmp = first->next; first->next = ptr; ptr = first; first = tmp; if (first->next !=0)
C++ Исключение символов из строки Добрый день. есть задача: Дана строка символов. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелы внутри себя, будем называть словами. Исключить из строки слова, состоящие из символов русского и латинского алфавитов одновременно. как я понимаю нужно разбить строку на слова ограниченные пробелами, и потом с каждым из них работаем. я смог нарезать... http://www.cyberforum.ru/cpp-beginners/thread706714.html
перевод ip адреса в двоичную и шестнадцатиричную системы C++
Помогите, пожалуйста! На экране имеется 3 окошка: В одно вы вводите число в десятичной системе В двух других вычисляются значения в двоичной и шестнадцатиричной системе.
Реализовать задачу с помощью цикла C++
Необходимо переписать программу через цикл (for, while и тд без разницы) Очень прошу помочь. Вот код:#include <iostream> #include <string> #include <algorithm> int main() { long long number = 8647369240173465929; std::string str = to_string(number); std::sort(str.begin(), str.end()); std::cout<<"Two max numbers: "<<*(str.end() - 1)<<", "<<*(str.end()-2)<<std::endl;
C++ Ошибка компиляции. int main() http://www.cyberforum.ru/cpp-beginners/thread706631.html
При компиляции выдает ошибку, пишет что не поддерживает int по умолчанию. #include <stdio.h> #include <conio.h> int a = { 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 };
C++ перестановка n символов текста Доброго времени суток! Помогите, пажалуйста, написать программу, которая переставляет n-ое количество символов (n - целое число, вводимое пользователем с клавиатуры) строки, в зависимости от знака числа n: если положительное, то берется n символов с начала строки и перестаналивается назад, если отрицательное, то берется n символов с конца строки и перестаналивается вперед. Например: строка... подробнее

Показать сообщение отдельно
ohyou
2 / 2 / 1
Регистрация: 13.05.2012
Сообщений: 28

Вызов метода производного класса через обращение к методу базового класса - C++

23.11.2012, 17:00. Просмотров 3280. Ответов 12
Метки (Все метки)

Добрый день.
Изучаю основы ООП, наткнулся на проблему.

Если создавать классы внутри main.cpp, то всё нормально. Если же создавать в разных файлах, то компилятор ругается. Видимо, я где-то путаюсь и чего-то недообъявляю.

Суть отражена в заголовке, но распишу немного подробнее:
Есть класс world, и производный от этого класса класс player. У обоих классов есть функция void draw(). Хочу реализовать вызов player::draw(), обращаясь к world::draw() из main.cpp.

Единственная ошибка компилятора указывает на файл world.cpp.


main.cpp:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <GL/glfw.h>
#include <GL/gl.h>
#include "world.h"
#include "player.h"
 
bool running = true;
 
int main() {
  //инициализация glfw, создание окна
  world* myworld = new world();
  while(running) {
    //функции рендера и ресайза окна
    myworld->draw();
  }
  //terminate glfw
}


world.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef WORLD_H
#define WORLD_H
 
class world {
  public:
    void draw();
 
    world();
    virtual ~world();
  protected:
  private:
};
 
#endif // WORLD_H


world.cpp:
C++
1
2
3
4
5
6
7
#include "world.h"
 
void world::draw() {
    player::draw(); //ошибка компилятора: 'player' has not been declared
}
 
//пустые конструктор и деструктор


player.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef PLAYER_H
#define PLAYER_H
#include "world.h"
 
class player : public world {
  public:
    float pPosX,pPosY;
 
    void draw();
 
    player();
    virtual ~player();
  protected:
  private:
};
 
#endif // PLAYER_H


player.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "player.h"
#include <GL/glfw.h>
#include <GL/gl.h>
 
void player::draw() {
  glBegin(GL_QUADS); //рисования в openGL для теста работоспособности
    glVertex2f(-10.0f, 10.0f);
    glVertex2f(10.0f, 10.0f);
    glVertex2f(10.0f, -10.0f);
    glVertex2f(-10.0f, -10.0f);
  glEnd();
}
 
//пустые конструктор и деструктор
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru