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

Дружественный класс (код внутри) - C++

Восстановить пароль Регистрация
 
Demo0n
1 / 1 / 0
Регистрация: 28.10.2012
Сообщений: 86
19.12.2012, 20:45     Дружественный класс (код внутри) #1
вот я не знаю как сделать из этого дружественный класс, все тоже самое только с дружественным и еще виртуальный член добавить, как бы там вроде бы еще надо к нему абстрактный класс, я наслышал )
.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
#include <iostream>
using namespace std;
 
 
class Matrix 
{
private:
 
public:
     static int value[3][3];
 
     void Create_Matrix();
    void Print_Matrix(); 
    Matrix operator+(const Matrix &matrix); 
    Matrix operator*(const Matrix &matrix); 
    Matrix operator-(const Matrix &matrix); 
 
    Matrix() 
{
    for(int i = 0; i < 3; i++ ) 
        for(int j = 0; j < 3; j++ ) 
            value[i][j]=rand()%10; 
}
};
.cpp
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <iostream>
#include "class.h"
#include <math.h>
using namespace std;
 
class m : public Matrix
{
public:
 
void Create_Matrix();
void Print_Matrix();
};
 
int Matrix::value[3][3];
 
void Matrix::Create_Matrix() 
{
    for(int i = 0; i < 3; i++ ) 
        for(int j = 0; j < 3; j++ ) 
            value[i][j]=rand()%10; 
}
 
void Matrix::Print_Matrix() 
{
    cout << "__________\n";
    for(int i = 0; i < 3; i++ ) 
    {
        for(int j = 0; j < 3; j++ ) 
        {
            cout.width(4); 
            cout << value[i][j]; 
        }
    cout << "\n"; 
    }
cout << "__________\n";
};
 
Matrix Matrix::operator+ (const Matrix &matrix) 
{
    Matrix temp;
      for (int i = 0; i <3; i++)
        for (int j = 0; j <3; j++)
            temp.value[i][j] = value[i][j] + matrix.value[i][j]; 
    return temp; 
};
Matrix Matrix::operator- (const Matrix &matrix)
{
    Matrix temp;
    for(int i= 0; i<3;i++)
        for(int j=0;j<3;j++)
            temp.value[i][j]=value[i][j] - matrix.value[i][j];
    return temp;
};
Matrix Matrix::operator* (const Matrix &matrix)
{
    Matrix mnog;
    for(int i=0;i<3;i++)
        for(int j=0;j<3;j++)
            mnog.value[i][j]=value[i][j]*matrix.value[i][j];
    return mnog;
};
  
int main () 
{
 
    Matrix a,b,c,d,e; 
    a.Create_Matrix(); 
    cout << "Matrix A[3][3]: " <<endl;
    a.Print_Matrix(); 
    b.Create_Matrix(); 
    cout << "Matrix B[3][3]: " <<endl;
    b.Print_Matrix(); 
    c=a+b; 
    cout << "Matrix A+B[3][3]: "<<endl;
    c.Print_Matrix(); 
    e=a-b;
    cout << "Matrix A-B[3][3]:"<<endl;
    e.Print_Matrix();
    d=a*b;
    cout<<"Matrix A*B[3][3]:"<<endl;
    d.Print_Matrix();
    system("pause");
    
    
}
Вложения
Тип файла: rar matrix.rar (3.40 Мб, 2 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2012, 20:45     Дружественный класс (код внутри)
Посмотрите здесь:

C++ Класс внутри класса - возможно ли?
дружественный класс C++
Дружественный класс C++
класс внутри namespace C++
C++ Дружественный шаблонный класс
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Demo0n
1 / 1 / 0
Регистрация: 28.10.2012
Сообщений: 86
19.12.2012, 23:34  [ТС]     Дружественный класс (код внутри) #2
прям уж никто не знает, иль просто не читали?
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
20.12.2012, 00:33     Дружественный класс (код внутри) #3
что хотите поставить как friend?
и что за виртуальная функция нужна?
Demo0n
1 / 1 / 0
Регистрация: 28.10.2012
Сообщений: 86
20.12.2012, 01:40  [ТС]     Дружественный класс (код внутри) #4
ну как к примеру каку-это операцию ну + - *
а виртуальную что то новое добавить
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
20.12.2012, 01:43     Дружественный класс (код внутри) #5
Demo0n, и какой в этом смысл? зачем пихать френд туда, где он не нужен?
по поводу виртуальной функции - она нужна при наследовании, если в планах использовать полиморфные вызовы методов. Какое может быть наследование от класса Матрица?
Demo0n
1 / 1 / 0
Регистрация: 28.10.2012
Сообщений: 86
20.12.2012, 01:56  [ТС]     Дружественный класс (код внутри) #6
ну вот как раз я и не могу разобраться, а у меня лаба такова:
Виртуальные и статические члены, абстрактные классы, друзья классов, выполняется на базе предыдущей((
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
20.12.2012, 02:42     Дружественный класс (код внутри) #7
Тогда вот что - делайте класс Матрица абстрактным. Убирайте оттуда все данные и зануляйте все методы.
Должно получиться примерно так:
C++
1
2
3
4
5
6
7
8
class ClassName
{
public:
   virtual void function1() = 0;
   virtual void function2() = 0;
   //...
   virtual void functionN() = 0;
};
Затем делайте класс наследник Matrix33. И уже в нем определяете все методы и храните данные.
С френдом - можно сделать френдом оператор вывода в поток. Или не обязательно оператор - достаточно просто функцию вывода матрицы на экран
Demo0n
1 / 1 / 0
Регистрация: 28.10.2012
Сообщений: 86
20.12.2012, 13:50  [ТС]     Дружественный класс (код внутри) #8
ок)
ща попробуем

Добавлено через 26 минут
а в новом классе абстрактном так и писать
C++
1
2
3
public:
   virtual void function1() = 0;
   virtual void function2() = 0;
и вышло
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
 
class Matrix 
{ 
public:
   virtual void function1() = 0;
   virtual void function2() = 0;
    
 
};
class Matrix33
{
public:
    static int value[3][3];
    void Create_Matrix();
    void Print_Matrix(); 
    Matrix33 operator+(const Matrix33 &matrix); 
    Matrix33 operator*(const Matrix33 &matrix); 
    Matrix33 operator-(const Matrix33 &matrix); 
    
};
Добавлено через 10 минут
а что будет делать
C++
1
2
3
public:
   virtual void function1() = 0;
   virtual void function2() = 0;
????

Добавлено через 5 минут
забыл сделать Msatrix33 наследование ну то секунды дела
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
20.12.2012, 15:29     Дружественный класс (код внутри) #9
Цитата Сообщение от Demo0n Посмотреть сообщение
а в новом классе абстрактном так и писать
нет. занулять надо было те методы, которые там уже были - Create_Matrix и т.д.
function1 - это я для примера написал
Demo0n
1 / 1 / 0
Регистрация: 28.10.2012
Сообщений: 86
20.12.2012, 20:26  [ТС]     Дружественный класс (код внутри) #10
понял)
а можешь дружественный из этого кода вывести?
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
20.12.2012, 20:45     Дружественный класс (код внутри) #11
допустим, написать это:
C++
1
friend void Print_Matrix(Matrix33& matrix_name);
в классе Matrix33
и теперь внутри Print_Matrix можно обращаться к закрытым членам класса Matrix33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2012, 21:50     Дружественный класс (код внутри)
Еще ссылки по теме:

Не создается указатель на класс внутри класса C++
C++ Нужно удалить класс Rectangle1 дружественный к классу Rectangle
C++ Шаблонный класс с шаблонным оператором внутри - непонятное поведение

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Demo0n
1 / 1 / 0
Регистрация: 28.10.2012
Сообщений: 86
20.12.2012, 21:50  [ТС]     Дружественный класс (код внутри) #12
C++
1
2
3
4
5
6
7
8
9
class Matrix33:public Matrix
{
public:
    static int value[3][3];
    Matrix33 operator+(const Matrix33 &matrix); 
    Matrix33 operator*(const Matrix33 &matrix); 
    Matrix33 operator-(const Matrix33 &matrix); 
    
};
тип
пишет возвращающий абстрактный класс не доступен
и
C++
1
2
3
4
5
6
void Matrix33::Create_Matrix() 
{
    for(int i = 0; i < 3; i++ ) 
        for(int j = 0; j < 3; j++ ) 
            value[i][j]=rand()%10; 
}
использование унаследование членов не допускается

Добавлено через 5 минут
пишет возвращающий абстрактный класс не доступен"operator-" во всех операциях
Yandex
Объявления
20.12.2012, 21:50     Дружественный класс (код внутри)
Ответ Создать тему
Опции темы

Текущее время: 15:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru