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

Как правильно использовать friend для доступа к экземпляру класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ [C++] Динамическое программирование, задача о рюкзаке http://www.cyberforum.ru/cpp-beginners/thread414146.html
Помогите реализовать задачу о рюкзаке методом динамического программирования
C++ как определить "отмена" или "печать" в PrintDialog1 Подскажите как определить произошло нажатие отмены или печать документа, потому что в обработчике только на закрытие окна, а оно при обоих случаях закрывается, а в возвращаемых параметрах нет об этом ничего... http://www.cyberforum.ru/cpp-beginners/thread414143.html
Регистрация в приложении C++
чуть-чуть помогите, пожалуйста. Ошибок куча, не понимаю как исправить( //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Unit2.h"
C++ в линейном массиве
Помогите плиз!!!!! в линейном массиве найти все группы подряд идущих элементов, образующих геометрическую прогрессию.
C++ определить все строки и столбцы матрицы, в которых встречаются одинаковые элементы на с++ http://www.cyberforum.ru/cpp-beginners/thread414123.html
вот само условие Написать программу, которая выполняет операцию над матрицей целых чисел. Матрицу следует размещать в динамической памяти. Размер матрицы указывает пользователь после запуска программы. Матрица заполняется случайными числами. Программа выводит исходную матрицу на экран, осуществляет операцию: определить все строки и столбцы матрицы, в которых встречаются одинаковые элементы
C++ срочно!!! нужна помощь со структурами!!! помогите пожалуйста, нужно в си темпы возрастания продуктивности работы работников в промышленности (1913г.=100%). Года | СССР| США| АНГЛИЯ| ФРАНЦИЯ 1928 | 120 | 137 | 94 |105 1940 | 422 | 166 | 105 |114 1950 | 580 | 209 | 122 |131 1955 | 837 | 250 | 139 |172 а) в каком году разница в темпах возрастания продуктивности работы во Франции и Англии максимальная? б) в каких годах темп... подробнее

Показать сообщение отдельно
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
22.12.2011, 00:28
Вам френды нигде не нужны в общем-то. вот ваш компилябельный код:
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include "stdafx.h"
#include <iostream>
using namespace std;
 
class index
{
  int *swapmas;
  int size_;
public: 
  index(int n)
  {
    swapmas = new int(n);
    size_ = n;
    for(int i = 0; i<n; ++i)
    {
      swapmas[i] = n-i;
    }
  }
 
  int operator[](int i)
  {
    return swapmas[i];
  }
  int size()
  {
    return size_;
  }
};
 
 
class valarray; // из-за этого можно в декларации класса indarray использовать ссылки и указатели на valarray
 
 
class indarray
{
  valarray& val;
  index& ind;
 
public:
  indarray(valarray& val_, index& ind_);
  void operator = (const valarray& valar);
};
 
class valarray
{
  int *mas;
  int size;
        
public:
  valarray(int n);
  //~valarray();
 
  void print();
  int operator[](int n);
  indarray operator[](index t);
};
 
indarray::indarray(valarray &val_, index &ind_)
  : val(val_)
  , ind(ind_)
{
}
 
void indarray::operator = (const valarray& valar)
{
  for(int i = 0; ind.size(); ++i) //тут пишет, что члены недоступны. А очень хочется получить поле size_ через метод size
  {
  }
}
 
valarray::valarray(int n)
{
  mas = new int[n];
  size =  n;
  for (int i = 0; i<size; ++i)
    mas[i] = rand();
}
 
/*
valarray::~valarray()
{
  delete[] mas;
}
*/
 
void valarray::print()
{
  //cout<<"\nМассив:\n";
  for(int i = 0; i<size; ++i)
    cout<<'['<<i<<"] = "<<mas[i]<<"\n";
}
 
int valarray::operator[](int n)
{
  return mas[n];
}
 
indarray valarray::operator[](index t)
{
  return indarray(*this, t);
}
 
int _tmain(int argc, _TCHAR* argv[])
{
  setlocale(0, "Rus");
  valarray v(10),v1(10);
  index ind(10);
  cout<<"Массив v: \n";
  v.print();
  //v[ind] = v1; // v[ind[i]] = v1[i]
  return 0;
}
Корректность уже сами смотрите
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru