Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/76: Рейтинг темы: голосов - 76, средняя оценка - 4.84
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 146
1

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

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

Author24 — интернет-сервис помощи студентам
Вот так простенький код
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; Как тогда объявить переменную типа В?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.08.2014, 17:43
Ответы с готовыми решениями:

С++ ошибка error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Помогите, как исправить данную ошибку. error C4430: missing type specifier - int assumed. Note: C++...

Error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\program files\microsoft visual studio 9.0\visual studio...

Ошибка "missing type specifier - int assumed" В шаблоне класса
#include<iostream> using namespace std; int i; template <typename T> class Masiv {...

Ошибка "error C4430: missing type specifier" при работе с fstream
Добрый день. Работаю над сохранением и загрузкой файлов. Для этого использую библиотеку...

17
102 / 75 / 17
Регистрация: 23.07.2014
Сообщений: 877
Записей в блоге: 1
04.08.2014, 17:47 2
m0, вы хотите циклическое включение заголовочных файлов устроить? Не выйдет.
0
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 146
04.08.2014, 18:09  [ТС] 3
Окей, что мне делать?
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,520
04.08.2014, 18:19 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;
};
0
102 / 75 / 17
Регистрация: 23.07.2014
Сообщений: 877
Записей в блоге: 1
04.08.2014, 18:25 5
m0, или вообще убрать #include "A.h". Разве классу B класс A нужен? Если они используют что-то общее (typedef'ы, например), вынесите это общее в отдельный хэдер.
0
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 146
04.08.2014, 18:41  [ТС] 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 '*'
0
102 / 75 / 17
Регистрация: 23.07.2014
Сообщений: 877
Записей в блоге: 1
04.08.2014, 18:43 7
m0, тогда не парьтесь и объявите их в одном месте.
0
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 146
04.08.2014, 20:09  [ТС] 8
CyberSolver, Ну это я здесь два простеньких класса привел, на самом деле у меня два больших класса, и мне нужна такая переменная в каждом из них.
0
102 / 75 / 17
Регистрация: 23.07.2014
Сообщений: 877
Записей в блоге: 1
04.08.2014, 20:18 9
m0, ну если они содержат по указателю друг на друга, и вы непременно хотите разделения - на напишите что-ли отдельный заголовочник
C++
1
2
class A;
class B;
и включите в оба.

Если не указатели, а сами - придется пихать в один.
1
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 146
04.08.2014, 20:20  [ТС] 10
CyberSolver, Про отдельный заголовочный файл не понял
0
102 / 75 / 17
Регистрация: 23.07.2014
Сообщений: 877
Записей в блоге: 1
04.08.2014, 20:24 11
Цитата Сообщение от CyberSolver Посмотреть сообщение
Если они используют что-то общее (typedef'ы, например), вынесите это общее в отдельный хэдер.
m0, я про это. Пусть в отдельном хэдере просто будет
Цитата Сообщение от CyberSolver Посмотреть сообщение
C++
1
2
class A;
class B;
раз пошла такая пьянка. Я же не знаю вашей задачи, так что могу советовать только общее: брось каку и так далее.
0
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 146
04.08.2014, 20:27  [ТС] 12
Фак, есть какая-то книга где в качестве примера проектируется реальное приложение? желательно через тестирование. А то учебные примеры слишком унылы.
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
04.08.2014, 20:33 13
Это называется forward declaration

http://www.developingthefuture... ions-in-c/
1
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,520
04.08.2014, 20:39 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;
}
каков размер объектов данных классов?
0
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 146
04.08.2014, 20:41  [ТС] 15
ValeryS, да большой, поле класса будет содержать массив координат вершин. А их до миллиона может быть и в каждой x, y, z -int;
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,520
04.08.2014, 20:49 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, кроме того что он будет где то описан
так что при перекрестном использовании только указатели, хотя бы в одном из них
1
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 146
04.08.2014, 20:50  [ТС] 17
ValeryS, Так и сделаю, по другому видимо никак.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,520
04.08.2014, 20:51 18
Цитата Сообщение от m0 Посмотреть сообщение
содержать массив координат вершин. А их до миллиона может быть и в каждой x, y, z -int;
итого 12 мегабайт, на стеке такое не выделишь, только в куче
значит указатели
0
04.08.2014, 20:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2014, 20:51
Помогаю со студенческими работами здесь

Шаблон класса. Ошибка `missing type specifier`
Вот код: template <int value, typename type> class Class { public: type Array; type...

Missing type specifier
Добрый день. Подскажите, пожалуйста, как исправить данную ошибку. Пишет "missing type specifier -...

Ошибка expected type-specifier before 'ptr_head' при реализации стека
Третий заход. :D Как-то пока мне не везёт в C++... #include <iostream> #include <stdexcept> ...

Ошибка: Error 1 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Пытаюсь написать программу для решения определённых интегралов методом "средних прямоугольников",...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru