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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.74
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 137
04.08.2014, 17:43     Ошибка C4430: missing type specifier - int assumed #1
Вот так простенький код
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; Как тогда объявить переменную типа В?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyberSolver
 Аватар для 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
Сообщений: 137
04.08.2014, 18:09  [ТС]     Ошибка C4430: missing type specifier - int assumed #3
Окей, что мне делать?
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
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
 Аватар для 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
Сообщений: 137
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
 Аватар для 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
Сообщений: 137
04.08.2014, 20:09  [ТС]     Ошибка C4430: missing type specifier - int assumed #8
CyberSolver, Ну это я здесь два простеньких класса привел, на самом деле у меня два больших класса, и мне нужна такая переменная в каждом из них.
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
Сообщений: 137
04.08.2014, 20:20  [ТС]     Ошибка C4430: missing type specifier - int assumed #10
CyberSolver, Про отдельный заголовочный файл не понял
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
Сообщений: 137
04.08.2014, 20:27  [ТС]     Ошибка C4430: missing type specifier - int assumed #12
Фак, есть какая-то книга где в качестве примера проектируется реальное приложение? желательно через тестирование. А то учебные примеры слишком унылы.
uglyPinokkio
325 / 228 / 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
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
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
Сообщений: 137
04.08.2014, 20:41  [ТС]     Ошибка C4430: missing type specifier - int assumed #15
ValeryS, да большой, поле класса будет содержать массив координат вершин. А их до миллиона может быть и в каждой x, y, z -int;
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
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
Сообщений: 137
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
Еще ссылки по теме:

C++ Error C4430: отсутствует спецификатор типа - предполагается int
Ошибка C4430: отсутствует спецификатор типа - предполагается int C++
C++ Ошибка "missing type specifier - int assumed" В шаблоне класса

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
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
Ответ Создать тему
Опции темы

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