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

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

Войти
Регистрация
Восстановить пароль
 
defi
0 / 0 / 0
Регистрация: 29.01.2012
Сообщений: 34
#1

Объявление класса после инициализации - C++

07.07.2012, 15:02. Просмотров 455. Ответов 2
Метки нет (Все метки)

Подскажите возможно ли объявление класса в такой последовательности, чтобы вместо объявления написать class car;, просто видел в некоторых исходниках такое объявление, но не уверен что оно для этого применяется. Сам код не компилится.
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
#include <iostream>
 
using namespace std;
 
class car;
 
int main()
{
    car ob("audi", 200);
    ob.show_car();
    system("pause");
    return 0;
}
 
class car {
    char* m_model;
    int m_speed;
public:
    car(char* model, int speed) {
        m_model = model;
        m_speed = speed;
    }
 
    void show_car() { cout << m_model << " " << m_speed << "\n"; }
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2012, 15:02     Объявление класса после инициализации
Посмотрите здесь:

Объявление объекта класса fstream в качестве статической компоненты другого класса - C++
Доброго времени суток. Есть задание, в котором говорится &quot;...Перепишите программы из упражнений 4 и 6 таким образом, чтобы использовать...

Объявление объекта одного класса в описании другого класса - C++
Здравствуйте. Почему при объявлении Student s в классе Teacher не возникает ошибки? Ведь такой объект уже существует. И почему при...

Порядок инициализации членов класса - C++
Здравствуйте форумчане. Столкнулся с проблемой. Не могу найти доходчивой статьи на данный вопрос про инициалиазцию членов в классе. ...

Синтаксическая ошибка при инициализации класса - C++
Ругается на инициализацию списком struct Cord { int x=0, y=0, z=0; }; class Point { public:

Ошибка инициализации объекта, конструктором класса - C++
Добрый день. Написал программу. Создание класса (упражнение из книги Дейтеля) &quot;Создайте класс с именем Account, которым мог бы...

Ошибка при инициализации элемента класса - C++
Добрый день, Нужна помощь более опытных форумчан, в поиске ошибки. Есть фрагмент кода: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Объявление класса с шаблоном - C++
Пишу в Qt. Создал класс с шаблоном matrix.h #ifndef MATRIX_H #define MATRIX_H template &lt;class T&gt; class Matrix {

Объявление класса Point - C++
Объявил класс Point в заголовочном класса для хранения значений координат x,y а далее класс Rectanagle и вот в классе Rectanagle каждая...

Предварительное объявление класса - C++
Имеется код такого вида: class IBase { public: virtual foo() = NULL; .. .. .. };

Двойное объявление класса - C++
Для чего два раза писать class Animal? class Animal; void setValue (Animal&amp;, int); class Animal { public: Animal(); ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
07.07.2012, 15:53     Объявление класса после инициализации #2
defi, На С++ вообщем-то никак, я одном исходнике так не сделаешь, даже использования указателей не поможет (ибо прежде чем использовать указатель, его все таки надо создать).
yekka
385 / 149 / 8
Регистрация: 12.05.2011
Сообщений: 450
07.07.2012, 16:03     Объявление класса после инициализации #3
C++
1
class car;
это forward declaration,
используется для того, чтобы сообщить компилятору, что car -- это имя какого-то класса. После этого это имя можно использовать, например, для объявления функций, принимающих car в качестве аргумента.
C++
1
2
3
class mechanic {
    void repair(car &);
};
Но работать с объектами этого класса можно будет только после того, как класс будет объявлен целиком.
Forward declaration используется, когда есть два класса, зависящих друг от друга и для полного объявления каждого из них компилятору нужно знать о существовании другого.
Ответ Создать тему
Опции темы

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