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

Ошибка в перегрузке конструктора копирования - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Диспетчеризация вычислительных процессов http://www.cyberforum.ru/cpp-beginners/thread1007689.html
Добрый день! Нужно написать программу в С++ Требуется создать диспетчер на основе дисциплины с динамическими приоритетами, изменяющимися по формуле: Рri=Proi+ai*t., где Proi - начальное значение приоритета i-ой задачи; ai - задаваемый коэффициент i-ой задачи; i=1..n,n- число задач. Помогите) Заранее спасибо
C++ Как проверить в с++ пуст файл или нет? Добрый день! Мне нужно написать программу, которая после открытия файла делает проверку, пуст этот файл или нет. Подскажите, пожалуйста, как это можно сделать на с++? http://www.cyberforum.ru/cpp-beginners/thread1007685.html
Написать программу вычисления объема цилиндра C++
Привет всем)Помогите пожалуйста решить 4 задачи а то скоро сдавать ,а я ну не шарю в с++))) 3.Написать профамму вычисления объема цилиндра. Ниже приведен рекомендуемый вид экрана во время выполнения профаммы (данные, введенные пользователем, выделены полужирным шрифтом). Вычисление объема цилиндра. Введите исходные данные: радиус основания (см) -> 5 высота иллиндра (см) -> 10
C++ ввод с клавиатуры значения переменных
Привет всем)Помогите пожалуйста решить 4 задачи а то скоро сдавать ,а я ну не шарю в с++))) 2.Написать инструкцию, обеспечивающую ввод с клавиатуры значения переменных radius типа float. Помогите пожалуйста)
C++ Как проверить в с++ пуст файл или нет? http://www.cyberforum.ru/cpp-beginners/thread1007674.html
Добрый день! Мне нужно написать программу, которая после открытия файла будет проверять, пуст этот файл или нет. Подскажите, пожалуйста, как это можно сделать на с++?
C++ Cреднее арифметическое элементов массива 4.Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет среднее арифметическое его элементов. Помогите пожалуйста) подробнее

Показать сообщение отдельно
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
14.11.2013, 16:46     Ошибка в перегрузке конструктора копирования
Нужно больше констов
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
#include <iostream>
#include <cstring>              // для strcpy() и т. д.
using namespace std;
///////////////////////////////////////////////////////////
class strCount                  // Класс-счетчик уникальных строк
  {                    private:
    int count;                  // собственно счетчик
    char* str;                  // указатель на строку
    friend class String;        // сделаем себя доступными
    //методы скрыты
//---------------------------------------------------------
    strCount(const char* s)           // конструктор с одним аргументом
      {
      int length = strlen(s);   // длина строкового
                                // аргумента
      str = new char[length+1]; // занять память
                                // под строку
      strcpy(str, s);           // копировать в нее аргументы
      count=1;                  // считать с единицы
      }
//---------------------------------------------------------
    ~strCount()                 // деструктор
      { delete[] str; }         // удалить строку
  };
///////////////////////////////////////////////////////////
class String                    // класс String
  {
  private:
    strCount* psc;              // указатель на strCount
  public:
    String()                    // конструктор без аргументов
    {psc = new strCount("NULL");}
 
//---------------------------------------------------------
    String(const char *s)             // конструктор с одним аргументом
    { psc = new strCount(s);}
//---------------------------------------------------------
    String ( const String& S)         // конструктор копирования
    {
        psc = S.psc;
        (psc->count)++;
    }
 
//---------------------------------------------------------
    ~String()                   // деструктор
      {
      if(psc->count==1)         // если последний
                                // пользователь,
        delete psc;             // удалить strCount
      else                      // иначе
        (psc->count)--;         // уменьшить счетчик
      }
//---------------------------------------------------------
    void display()              // вывод String
      {
      cout << psc->str;         // вывести строку
      cout << " (addr=" << psc << ")";  // вывести адрес
      }
//---------------------------------------------------------
    void operator = (const String& S) // присвоение String
      {
      if(psc->count==1)         // если последний
                                // пользователь,
        delete psc;             // удалить strCount
      else                      // иначе
        (psc->count)--;         // уменьшить счетчик
      psc = S.psc;              //использовать strCount
                                //аргумента
      (psc->count)++;           //увеличить счетчик
      }
  };
///////////////////////////////////////////////////////////
int main()
  {
  String s3 = "Муха по полю пошла, муха денежку нашла";
  cout << "\ns3="; s3.display(); //вывести s3
 
  String s1;                     //определить объект String
  s1 = s3;                       //присвоить его другому объекту
  cout << "\ns1="; s1.display(); //вывести его
 
  String s2(s3);                 //инициализация
  cout << "\ns2="; s2.display(); //вывести
                                 //инициализированное
  cout << endl;
  return 0;
  }
Добавлено через 1 минуту
Цитата Сообщение от Alexxx7 Посмотреть сообщение
иногда компиляторы помимо конструктора с параметрами требуют конструктор по умолчанию, и если не ошибаюсь конструкторы всегда должны быть пабликами
компиляторы требуют конструктор по умолчанию, если он нужен. Если он не вызывается (явно/неявно), то ошибки не будет. Конструкторы не обязательно должны быть пабликами
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru