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

Может ли виртуальная функция возвращать значения разных типов? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ шаблон функции который принимает в параметры массив количиство елементов и должен найти сумму елементов массив http://www.cyberforum.ru/cpp-beginners/thread1176873.html
шаблон функции который принимает в параметры массив количиство елементов и должен найти сумму елементов массива
C++ написать 2 перегруженных функции для поиска суммы корней квадратного и линейного уравнения написать 2 перегруженных функции для поиска суммы корней квадратного и линейного уравнения заранее спасибо Добавлено через 1 час 31 минуту апп http://www.cyberforum.ru/cpp-beginners/thread1176872.html
Распечатать строку с заданным номером из текстового файла C++
Задание: Пусть дан текстовый файл.Распечатайте строку с заданным номером. Вот начало дальше не знаю что делать,прошу помощи. #include <stdio.h> int main(int ras, char* ras) { FILE *d; d = fopen("1.txt", "r"); int n;
Заполнить двухмерный массив случайными числами и вывести на экран C++
1.Заполнить двухмерный массив случайными числами и вывести на экран. 2.Модифицировать его следующим образом: элементу побочной диагонали присвоить значение равное разности сумм элементов до него и после в соответствующем столбце.
C++ Создать двоичный файл с информацией на скриншоте http://www.cyberforum.ru/cpp-beginners/thread1176828.html
1. С помощью текстового редактора создать текстовый документ, в который занести исходную информацию. Рекомендуется вначале занести количество записей, а затем последовательно все записи, причем тестовые поля вводить в отдельной строке, а числовые – можно в отдельной строке или в одной через пробел или разделитель табуляцию. Например, содержимое файла, который будет включать 7 записей –...
C++ Создать двоичный файл, куда записать n вещественных чисел Создать двоичный файл, куда записать n вещественных чисел. Сделать массив из элементов исходного файла, внеся в него числа, превосходящие среднее значение среди положительных значений файла. подробнее

Показать сообщение отдельно
riv94
 Аватар для riv94
64 / 64 / 11
Регистрация: 13.02.2011
Сообщений: 390
15.05.2014, 16:17  [ТС]     Может ли виртуальная функция возвращать значения разных типов?
outoftime, суть задачи, поставленной передо мной, заключается в том, что мне надо создать абстрактный базовый класс, класс-потомок, наследующий от базового под public. Максимальную функциональность нужно реализовать в абстрактном классе. В классах квадратные матрицы. В базовом классе я память под char выделяю, а уже какие-то операции, конкретно привязанные к типу выполняю в подклассах. А потом перегрузить потоки ввода-вывода, перегрузить различные операции. Так вот:
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
60
61
62
63
64
65
66
67
68
// v02.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <fstream>
 
using namespace std;
const int float_size=32, double_size=64;   //битовая размерность типа!
int razm;
 
class AbstractMatrix
{
public:
    
    char *arr, *arr1;
    int MatrixSize, TypeMatrixSize;
    AbstractMatrix(int razm, int TSize);   //конструктор создания матрицы заданной размерности
    friend istream &operator>>(istream &stream, AbstractMatrix &obj);
    friend ostream &operator<<(ostream &stream, AbstractMatrix obj);
        
};
 
istream &operator>>(istream &stream, AbstractMatrix &obj)
{   
    cout<<"\nENTER MEMBERS OF MATRIX\n";
    for (int i=0; i<obj.MatrixSize*obj.MatrixSize*obj.TypeMatrixSize; i+=obj.TypeMatrixSize) stream>>(float&) obj.arr[i]; 
    //НО ЗДЕСЬ НЕЛЬЗЯ КОНКРЕТНО ПРИВЯЗЫВАТЬСЯ К ТИПУ!!!
    //ТУТ ДОЛЖНА ВЫЗЫВАТЬСЯ ВИРТУАЛЬНАЯ ФУНКЦИЯ,ВЫПОЛНЯЮЩАЯ ЯВНОЕ ПРИВЕДЕНИЕ ТИПОВ ОТНОСИТЕЛЬНО КЛАССА ПОТОМКА!!!
    return stream;
};
ostream &operator<<(ostream &stream, AbstractMatrix obj)
{
    int k=0;
    cout<<"\nMATRIX\n";
    for (int i=0; i<obj.MatrixSize*obj.MatrixSize*obj.TypeMatrixSize; i+=obj.TypeMatrixSize) 
    {
        k++;
        stream<<(float&) obj.arr[i]<<' ';
        if (k%obj.MatrixSize==0) stream<<endl;
    };
    return stream;
};
 
 
AbstractMatrix::AbstractMatrix(int razm, int TSize)   //конструктор создания матрицы заданной размерности
{
    MatrixSize=razm;
    TypeMatrixSize=TSize/8;
    arr=new char[MatrixSize*MatrixSize*TypeMatrixSize];
};
 
 
class FloatMatrix: public AbstractMatrix
{
public:
    FloatMatrix(int razm):AbstractMatrix(razm, float_size){};  //конструктор создания матрицы заданной размерности
};
 
void main()
{
    cout<<"\nINSERT Razm\n";
    cin>>razm;
    FloatMatrix b(razm);
    cin>>b;
    cout<<b;
 
}
Я хотел бы сразу использовать вирт.функцию при перегрузке потоков, но не понятно было, как ее использовать в виду того, что она возвращает значения конкретно одного типа данных!
 
Текущее время: 15:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru