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

Что я делаю не так? "Некоректное объявление". - C++

Восстановить пароль Регистрация
 
KudaSoff
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 7
29.05.2014, 09:26     Что я делаю не так? "Некоректное объявление". #1
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
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
#pragma argsused
 
class generalData{                                 //Основные данные
  private:                                         //Локальные переменные
    char title[],prod[];                           //Строка - название, производитель
    long int hdd;                                  //Число - кол-во памяти
  public:                                          //Защищенные переменные
    generalData();                            //Конструктор очищающий переменные
    generalData(char t[], int h, char p[]);   //Конструктор заполняющий переменные
    generalData(char d[]);                    //Конструктор заполняющий переменные из строки с ;
}
 
 generalData::generalData(){
  title[]="";
  hdd=0;
  prod[]="";
}
 
generalData::generalData(char t[], int h, char p[]){
  title[]=t[];
  hdd=h;
  prod[]=p[];
}
 
generalData::generalData(char f[]){
}
 
class data:generalData{
  private:
    char sys[]="Системное",app[]="Прикладное",net[]="Сетевое";
  public:
    data();                               //Конструктор очищающий переменные
    data(char f[]);                           //Конструктор заполняющий переменные из строки с ;
}
 
data::data(){
  sys[]="Системное";
  app[]="Прикладное";
  net[]="Сетевое";
}
 
data::data(char f[]){
}
 
int main(int argc, char* argv[])
{
  q=new data();
  cout<<q;
  getch();
  return 0;
}
Строка 17 выдает - некоректное объявление. Что не так?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2014, 09:26     Что я делаю не так? "Некоректное объявление".
Посмотрите здесь:

Что означают команды "fun", "my_max", "my_min" в C++? C++
Ввести символьную строку и заменить все буквы "а" на буквы "б" и наоборот, как заглавные, так и строчные. C++
C++ я задал произвольный текст длинной 5 строк, и допустим что я ввел 5 раз букву "П" , какой цикл нужно создать чтобы пометять букву "П" на букву "Р" ?
Имеется строка "AAABBCCAA", нужно вывести на экран "3A2B2C2A", и так же сделать обратное действие C++
Как использовать символы из русского алфавита, а так же символы типа "█" "░" и т.д.? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Хедин
 Аватар для Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
29.05.2014, 09:35     Что я делаю не так? "Некоректное объявление". #2
KudaSoff, я так понимаю, с символьными массивами надо работать с помощью strcpy. И вообще, советую использовать тип string в С++
kventin_zhuk
БНТУ ФИТР
 Аватар для kventin_zhuk
214 / 154 / 15
Регистрация: 26.12.2012
Сообщений: 382
29.05.2014, 09:36     Что я делаю не так? "Некоректное объявление". #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
KudaSoff, После описания класса требуется точка с запятой
C++
1
2
3
4
5
6
7
8
9
class generalData{                                 //Основные данные
  private:                                         //Локальные переменные
    char title[],prod[];                           //Строка - название, производитель
    long int hdd;                                  //Число - кол-во памяти
  public:                                          //Защищенные переменные
    generalData();                            //Конструктор очищающий переменные
    generalData(char t[], int h, char p[]);   //Конструктор заполняющий переменные
    generalData(char d[]);                    //Конструктор заполняющий переменные из строки с ;
};
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
29.05.2014, 09:45     Что я делаю не так? "Некоректное объявление". #4
1) В 15 строке отсутствует ";"
2) В 9 строке не указаны размеры массива
3) 24 и 26 строка. Так делать нельзя. На худой конец:
C++
1
2
3
4
5
 generalData::generalData(){
  title[10]={};
  hdd=0;
  prod[10]={};
}
4)Вот так тоже делать нельзя:
C++
1
2
3
4
5
generalData::generalData(char t[], int h, char p[]){
  title[]=t[];
  hdd=h;
  prod[]=p[];
}
Нужно хотя бы так:
C++
1
2
3
4
5
6
7
generalData::generalData(char t[10], int h, char p[]){
  for(int i = 0; i < 10; ++i) {
    title[i]=t[i];
    prod[i]=p[i];
  }
  hdd=h;
}
5) Это вообще тихий ужас:
C++
1
    char sys[]="Системное",app[]="Прикладное",net[]="Сетевое";
Ну и дальше в том же духе.
KudaSoff
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 7
29.05.2014, 11:05  [ТС]     Что я делаю не так? "Некоректное объявление". #5
kventin_zhuk, Спасибо!
А что не так с массивами? Строки 18 и 20.

Добавлено через 17 минут
Ilot
C++
1
title[10]={};
Туже ошибку выдает

Добавлено через 2 минуты
Цитата Сообщение от Ilot Посмотреть сообщение
4)Вот так тоже делать нельзя:
C++
1
2
3
4
generalData::generalData(char t[], int h, char p[]){
* title[]=t[];
* hdd=h;
* prod[]=p[];
}
На это компилятор не ругается

Добавлено через 4 минуты
Решил проблему так)
C++
1
2
3
4
5
6
7
generalData::generalData(){
  for (int i=0;i<25;i++)
    title[i]=NULL;
  hdd=0;
  for (int i=0;i<25;i++)
    prod[i]=NULL;
}
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
30.05.2014, 08:28     Что я делаю не так? "Некоректное объявление". #6
Цитата Сообщение от KudaSoff Посмотреть сообщение
Туже ошибку выдает
Все ваши проблемы из-за того, что вы не понимаете когда можно опускать размер массива, а когда нет. Вот такая запись в классе:
C++
1
char title[],prod[];
Означает тоже самое, что и
C++
1
char title[0],prod[0];
Другими словами в вашем массиве нет элементов. Такое возможно если массив является членом класса, но запрещено если он объявлен вне класса.
Yandex
Объявления
30.05.2014, 08:28     Что я делаю не так? "Некоректное объявление".
Ответ Создать тему
Опции темы

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