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

Обращение к методам класса через указатель на экземпляр класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Тема: Циклы, функции. Написать программу по данной задаче http://www.cyberforum.ru/cpp-beginners/thread1045358.html
:help: Задача решается без использования массивов и строк. Последовательно вводится некоторое количество целых чисел. Определить количество чисел в наиболее длинной последовательности подряд идущих нулей. Заранее огромное спасибо !!!
C++ Поправьте код Мне нужно что бы в один файл записало рандомные числа с повторами, а потом из этого файла считывало в другой но уже с удаленными повторами. Не могу найти ошибку. Мой код: #include<iostream> #include<fstream> #include<conio.h> //#include<ctime.h> #include<cstdlib> using namespace std; int main() http://www.cyberforum.ru/cpp-beginners/thread1045317.html
C++ Сжать массив, изъяв из него все элементы, модуль которых находится в интервале [a, b]
зжати масив, вилучивши з нього всі елементи, модуль яких знаходиться в інтервалі , місце яке звільнилось в кінці масиву заповнити нулями. Сжать масив изъяв из него все элементы, модуль которых находится в интервале , место которое освободилось в конце масива заполнить нулями.
Мистика с Visual Studio C++
Господа, выручайте, прошу. Знаю, код корявый, но точно рабочий. Компилился, и работал буквально сутки назад. Бьюсь уже 7 часов, не понимаю что случилось, код компилиться, но на вывод, просто выводит структуры в таком порядке, в котором вводил, просто игнорирует процедуры сортировки.На чужих компах все прекрасно.Выручайте... #include <iostream> #include <fstream> #include <string> #include...
C++ Определить, являются ли цифры последовательными элементами арифметической/геометрической прогрессии http://www.cyberforum.ru/cpp-beginners/thread1045256.html
Для каждого из некоторого количества натуральных чисел N определить, являются ли его цифры последовательными элементами арифметической/геометрической прогрессии.
C++ Рассчитать стоимость переговоров дневного и ночной тарифа помогите пожалуйста! рассчитать стоимость переговоров дневного и ночной тарифа подробнее

Показать сообщение отдельно
Merovingean
 Аватар для Merovingean
3 / 3 / 0
Регистрация: 14.12.2013
Сообщений: 67
17.12.2013, 23:07  [ТС]     Обращение к методам класса через указатель на экземпляр класса
Проблема в том, что я не знаю, как это написать.
Скажем, я объявляю итератор.
C++
1
list<Ship*>::const_iterator itr;
Как я понимаю, это простейшее обращение к элементу контейнера.
Но там ведь лежит объект не Ship. Там лежит объект типа Cosmic.
Как мне вызвать, скажем, setspeed() из класса Cosmic? В то время, как в Шипе его нет.
Попытки писать itr.setspeed() с разным количеством звездочек в начале ни к чему не приводят.
Пока только в мыслях кустарный способ брать объект из контейнера в отдельную переменную, работать с ним, а результат совать обратно в контейнер по тому же адресу.

Базовый класс.
ClassShip.h
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#pragma once
#include <iostream>
#include <fstream>
 
using namespace std;
 
class Ship
{
protected:
 
    char *name;     // название
    double capacity;    // вместимость
    int cost;           // стоимость
 
public:
    // Конструкторы, деструктор.
    Ship(void);                                                                                                 // Конструктор по-умолчанию.
    Ship(const Ship & t);                                                                                       // Конструктор копирования.
    Ship(const char *tname, const double &tcap, const int &tcost);  // Конструктор с параметрами.
    virtual ~Ship(void);
    
    // Гет
    virtual const char* getname() const;
    virtual double getcap() const;
    virtual int getcost() const;
    // Сет
    virtual void setname (const char*n);
    virtual void setcap (const double &n);
    virtual void setcost (const int &n);
    
    // Вывод на экран
    virtual ostream & sshow(ostream &t) = 0;
    // Вывод в файл через перегрузку базового класса
    virtual ofstream& fshow(ofstream &t) = 0;
 
    // Перегрузки
    //// Перегрузка вывода
    friend ostream& operator <<(ostream &t, Ship&a);
    friend ofstream& operator <<(ofstream &t, Ship &a);
 
    // Перегрузка операций сравнения
    virtual int cmp(char *x, char *y, int n);
 
    virtual int operator > (const Ship &k);
    virtual int operator < (const Ship &k);
    virtual int operator >= (const Ship &k);
    virtual int operator <= (const Ship &k);
    virtual int operator == (const Ship &k);
    virtual int operator != (const Ship &k);
 
};

// Cosmic.h - один из наследников
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#pragma once
#include "ClassShip.h"
#include <iostream>
#include <cstring>
#include <clocale>
#include <fstream>
 
using namespace std;
 
class Cosmic :
    public Ship
{
protected:
    int speed;
 
public:
    // Конструкторы, деструктор.
    Cosmic();
    Cosmic(const Cosmic &a);
    Cosmic(const char *tname, const double &tcap, const int &tcost, const int &tspeed);
    virtual ~Cosmic();
 
    // Вывод на экран через перегрузку базового класса
    virtual ostream & sshow(ostream &t);
    // Вывод в файл через перегрузку базового класса
    virtual ofstream& fshow(ofstream &t);
 
    // Вывод на экран с комментариями.
    virtual void show();
 
    // Вывод на экран с комметариями.
    friend ostream& operator <<(ostream &t, Cosmic&a);
 
    // Вывод в файл.
    friend ofstream& operator <<(ofstream &t, Cosmic&a);
 
    // Гет
    virtual const char* getname() const;
    virtual double getcap() const;
    virtual int getcost() const;
    virtual int getspeed() const;
    // Сет
    virtual void setname(const char*n);
    virtual void setcap(const double &n);
    virtual void setcost(const int &n);
    virtual void setspeed(const int&n);
 
    // Перегрузка операций сравнения
    virtual int cmp(char *x, char *y, int n);
 
    virtual int operator > (const Cosmic &k);
    virtual int operator < (const Cosmic &k);
    virtual int operator >= (const Cosmic &k);
    virtual int operator <= (const Cosmic &k);
    virtual int operator == (const Cosmic &k);
    virtual int operator != (const Cosmic &k);
    
    
};


Добавлено через 2 минуты
Ой. В смысле, объявлены новые методы. Скажем, в базовом всего три поля. Соответственно, для каждого поля есть геттер и сеттер. В производном полей уже четыре. Соответственно, добавлены еще геттер и сеттер для дополнительного поля.
 
Текущее время: 09:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru