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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.74
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
#1

Ошибка C4430: missing type specifier - int assumed - C++

04.08.2014, 17:43. Просмотров 4769. Ответов 17
Метки нет (Все метки)

Вот так простенький код
C++
1
2
3
4
5
6
7
8
#pragma once
#include "A.h"
class B
{
public:
    B(void);
    ~B(void);
};
C++
1
2
3
4
5
6
7
8
9
#pragma once
#include "B.h"
class A
{
public:
    A(void);
    virtual ~A(void);
    B b;
};
Ругается на переменную B b; Как тогда объявить переменную типа В?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2014, 17:43     Ошибка C4430: missing type specifier - int assumed
Посмотрите здесь:
С++ ошибка error C4430: missing type specifier - int assumed. Note: C++ does not support default-int C++
Error C4430: missing type specifier - int assumed. Note: C++ does not support default-int C++
C++ Ошибка "missing type specifier - int assumed" В шаблоне класса
C++ Ошибка "error C4430: missing type specifier" при работе с fstream
Шаблон класса. Ошибка `missing type specifier` C++
Missing type specifier C++
Incomplete type used in nested type specifier - Итерация по списку аргументов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
04.08.2014, 17:47     Ошибка C4430: missing type specifier - int assumed #2
m0, вы хотите циклическое включение заголовочных файлов устроить? Не выйдет.
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
04.08.2014, 18:09  [ТС]     Ошибка C4430: missing type specifier - int assumed #3
Окей, что мне делать?
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
04.08.2014, 18:19     Ошибка C4430: missing type specifier - int assumed #4
Цитата Сообщение от m0 Посмотреть сообщение
Окей, что мне делать?
Выбросить одно включение и объявить класс
типа так
C++
1
2
3
4
5
6
7
8
9
#pragma once
class B;
class A
{
public:
    A(void);
    virtual ~A(void);
    B b;
};
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
04.08.2014, 18:25     Ошибка C4430: missing type specifier - int assumed #5
m0, или вообще убрать #include "A.h". Разве классу B класс A нужен? Если они используют что-то общее (typedef'ы, например), вынесите это общее в отдельный хэдер.
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
04.08.2014, 18:41  [ТС]     Ошибка C4430: missing type specifier - int assumed #6
CyberSolver, Да нужен, я просто привел простой пример. Мне нужно чтобы у каждого класса была переменная с типом другого.
C++
1
2
3
4
5
6
7
8
9
#pragma once
#include "A.h"
class B
{
public:
    B(void);
    ~B(void);
    A* a;
};
C++
1
2
3
4
5
6
7
8
9
#pragma once
#include "B.h"
class A
{
public:
    A(void);
    virtual ~A(void);
    B* b;
};
Error 2 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Error 3 error C2143: syntax error : missing ';' before '*'
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
04.08.2014, 18:43     Ошибка C4430: missing type specifier - int assumed #7
m0, тогда не парьтесь и объявите их в одном месте.
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
04.08.2014, 20:09  [ТС]     Ошибка C4430: missing type specifier - int assumed #8
CyberSolver, Ну это я здесь два простеньких класса привел, на самом деле у меня два больших класса, и мне нужна такая переменная в каждом из них.
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
04.08.2014, 20:18     Ошибка C4430: missing type specifier - int assumed #9
m0, ну если они содержат по указателю друг на друга, и вы непременно хотите разделения - на напишите что-ли отдельный заголовочник
C++
1
2
class A;
class B;
и включите в оба.

Если не указатели, а сами - придется пихать в один.
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
04.08.2014, 20:20  [ТС]     Ошибка C4430: missing type specifier - int assumed #10
CyberSolver, Про отдельный заголовочный файл не понял
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
04.08.2014, 20:24     Ошибка C4430: missing type specifier - int assumed #11
Цитата Сообщение от CyberSolver Посмотреть сообщение
Если они используют что-то общее (typedef'ы, например), вынесите это общее в отдельный хэдер.
m0, я про это. Пусть в отдельном хэдере просто будет
Цитата Сообщение от CyberSolver Посмотреть сообщение
C++
1
2
class A;
class B;
раз пошла такая пьянка. Я же не знаю вашей задачи, так что могу советовать только общее: брось каку и так далее.
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
04.08.2014, 20:27  [ТС]     Ошибка C4430: missing type specifier - int assumed #12
Фак, есть какая-то книга где в качестве примера проектируется реальное приложение? желательно через тестирование. А то учебные примеры слишком унылы.
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
04.08.2014, 20:33     Ошибка C4430: missing type specifier - int assumed #13
Это называется forward declaration

http://www.developingthefuture.net/f...arations-in-c/
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
04.08.2014, 20:39     Ошибка C4430: missing type specifier - int assumed #14
Цитата Сообщение от CyberSolver Посмотреть сообщение
Если не указатели, а сами - придется пихать в один
только указатели иначе не скомпилится
например
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class A;
class B;
class A
{
public:
 int i1;
 B b;
}
 
class B
{
public:
 int i1;
 A a;
}
каков размер объектов данных классов?
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
04.08.2014, 20:41  [ТС]     Ошибка C4430: missing type specifier - int assumed #15
ValeryS, да большой, поле класса будет содержать массив координат вершин. А их до миллиона может быть и в каждой x, y, z -int;
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
04.08.2014, 20:49     Ошибка C4430: missing type specifier - int assumed #16
Цитата Сообщение от m0 Посмотреть сообщение
ValeryS, да большой,
я не про большой
смотри на мой пример
чтобы создать объект класса A нужно выделить память под инт и под класс B
значит высчитываем размер B нам нужно память для итн и под класс A
рассчитываем размер класса A нужно выделить память под инт и под класс B
ну и так далее
я уж не говорю что
при такой записи
C++
1
2
3
4
5
6
7
class B;
class A
{
public:
 int i1;
 B b;
}
компилятор ничего не знает про класс B, кроме того что он будет где то описан
так что при перекрестном использовании только указатели, хотя бы в одном из них
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
04.08.2014, 20:50  [ТС]     Ошибка C4430: missing type specifier - int assumed #17
ValeryS, Так и сделаю, по другому видимо никак.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2014, 20:51     Ошибка C4430: missing type specifier - int assumed
Еще ссылки по теме:
Ошибка C4430: отсутствует спецификатор типа - предполагается int C++
Ошибка: "C4430 отсутствует спецификатор типа - предполагается int..." C++
C++ Expected type-specifier
C++ Error C4430: отсутствует спецификатор типа - предполагается int
Error C4430: отсутствует спецификатор типа - предполагается int C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
04.08.2014, 20:51     Ошибка C4430: missing type specifier - int assumed #18
Цитата Сообщение от m0 Посмотреть сообщение
содержать массив координат вершин. А их до миллиона может быть и в каждой x, y, z -int;
итого 12 мегабайт, на стеке такое не выделишь, только в куче
значит указатели
Yandex
Объявления
04.08.2014, 20:51     Ошибка C4430: missing type specifier - int assumed
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru