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

классы. ошибка при вызове конструктора с параметрами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Новый масив из уникальных элементов другого массива http://www.cyberforum.ru/cpp-beginners/thread709358.html
Здравствуйте, помогите сделать функцию которая генерирует новый массив из элементов, которые не повторяются в другом массиву. Заранее спасибо.
C++ Все элементы вектора, которые встречаются более одного раза, переписать в другой вектор Все элементы вектора V,которые встречаються более одного раза ,переписать в другой вектор. Задача на С++ помогите решить. http://www.cyberforum.ru/cpp-beginners/thread709355.html
C++ Работа с шрифтами
Заносим в массив кнопки с диалогового окна: for(int index = 0; index < CONTROL_BUTTON_COUNT; index++) DDX_Control(pDX, index + 1000, ControlButtons); .... Устанавливаем текст кнопки и ее шрифт: CHAR Lang;
найдите пожалуйста ошибку C++
почему то слепляет возраст и имя 2го и 3го рабочих #include <stdio.h> #include <stdlib.h> #include <conio.h> main() { int vA,vB,vC; char a; char b; char c;
C++ Как связать два cpp файла в одном проекте (visual studio 2010) http://www.cyberforum.ru/cpp-beginners/thread709325.html
Есть два программы: одна создает файл.txt, вторая читает из него данные и выводит на экран. создает файл #include <iostream> #include <fstream> #include <string> using namespace std; void main () {
C++ Найти ошибку в коде пожалуйста найдите ошибку((( #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <math.h> #define FALSE 0 #define TRUE 1 void menu(void); подробнее

Показать сообщение отдельно
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
26.11.2012, 04:52     классы. ошибка при вызове конструктора с параметрами
Попробуй лучше
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Continent
{
public:
    Continent();
private:
    char *Name_Continent;
 
    Country **A;
//......
};
Continent::Continent()
{
  A = new Country*[12];
  for (int i=0; i<12; i++)
   if ( страна с номером i имеет острова)
      A[i]=new Coutnry_with_islands();
   else
      A[i]=new Coutnry_without_islands();
 
  Name_Continent=new char[20];
  kol1=0;
  kol2=0;
}
И всё Это будет единственное место в программе где будет if с островами или нет.
У тебя же сейчас в каждом методе класса Continent (например Continent::Print_Cont() )придётся писать два идентичных цикла, обрабатывающих массив А и масссив B. А если у класса Country вдруг появится ещё один-два-десять классов-наследников?

Добавлено через 8 минут
Теперь об ошибках. Смотри, что за непорядок:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Continent::Continent()
{
  A = new Coutnry_without_islands[6];
  B = new Coutnry_with_islands[6];
 
  Name_Continent=new char[20];
  kol1=0;
  kol2=0;
}
 
Continent::Continent(int N)
{
  this->Name_Continent=new char[30];
//....................
Память под A и B выделяется только в случае первого конструктора(без параметров)
Если я захочу создать континент конструктором с параметром N, память не будет выделена.
Забавно, что память под имя континента ты не забыл выделить в обоих случаях, в отличие от A и B!!
Ещё интересно, что в зависимости от случая максимальный размер строки с именем может быть то 20 то 30

Исправь:
C++
1
2
3
4
5
Continent::Continent(int N)
{
  A = new Coutnry_without_islands[6];
  B = new Coutnry_with_islands[6];
  this->Name_Continent=new char[30];
 
Текущее время: 20:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru