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

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

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

Зависимости и статические члены - C++

29.06.2010, 06:30. Просмотров 412. Ответов 1
Метки нет (Все метки)

По ходу дела, у меня возникла следующая проблема.
Допустим, что у нас есть два класса. Один класс затребует второй. Второй класс затребует первый (такие случаи бывают). По какой то причине такой код опять же не компилируется.
2) Ошибка номер два. Не удается получить доступ к статическому члену класса ?

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
56
57
58
59
60
61
62
#ifndef h_hd1_
#define h_hd1_
//#pragma once
 
#include "hd2.h"
 
class hd1 {
public:
    hd2 getHd2() const;
    static const hd2 cst;
};
 
const hd2 hd1::cst(4);
 
hd2 hd1::getHd2() const {
    return hd2(1);
};
 
#endif
 
#ifndef h_hd2_
#define h_hd2_
//#pragma once
 
#include "hd1.h"
 
class  hd2 {
public:
    hd2(int val) {
        member = val;
    }
    hd1 getHd1() {
        return hd1();
    }
    int member;
};
 
#endif
 
 
#include "hd1.h"
#include "hd2.h"
//#include "abuze.h"
 
//#include <vector>
 
//#define vector std::vector
 
#include <iostream>
using namespace std;
 
int main() {
    hd1 hd;
    hd.getHd2();
 
           //здесь тоже ошибка.
    cout << hd1::cst.member << endl;
    int i;
    cin >> i;
 
    return 0;
};
1>g:\projects\visual studio 2008\projects\brainzout\brainzout\hd2.h(12) : error C2146: syntax error : missing ';' before identifier 'getHd1'
1>g:\projects\visual studio 2008\projects\brainzout\brainzout\hd2.h(12) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>g:\projects\visual studio 2008\projects\brainzout\brainzout\hd2.h(12) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>g:\projects\visual studio 2008\projects\brainzout\brainzout\hd2.h(14) : warning C4183: 'getHd1': missing return type; assumed to be a member function returning 'int'
1>g:\projects\visual studio 2008\projects\brainzout\brainzout\hd2.h(13) : error C3861: 'hd1': identifier not found

Добавлено через 11 часов 24 минуты
вверх

Добавлено через 15 секунд
вверх
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2010, 06:30     Зависимости и статические члены
Посмотрите здесь:

Статические члены - C++
Мне необходимо создать класс А, причем: этот класс всегда нужен в единственном экземпляре, через этот класс работают классы В и С (т.е. в...

Статические члены и функции - C++
Что-то я не могу понять что я забыли и чяднт что код не компилируется. #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; ...

Статические члены класса - C++
Добрый день. Проходили тему - статические члены класса. Написали программу, вылезает ошибка, помогите побороть пожалуйста. #include...

Статические члены класса - C++
Доброго времени суток. Задача состоит в том, чтобы создать список обыектов класса Test, с возможностью последующего добавления элементов...

Статические массивы, члены класса - C++
необходимо создать статический массив. компилятор gcc #include&lt;iostream&gt; class c{ public: static const char x = &quot;qwe&quot;; ...

Как инициализировать статические члены класса - C++
Помогите пожалуйста....я не знаю как вывести в статическое поле значения((( #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include...

Классы (статические члены и конструктор копирования) - C++
Добрый вечер! Написал программку, все нормально работает, но есть два нюанса: необходимо сделать счетчик количества записей через...

Конструктор класса, содержащего только статические члены - C++
Практикуюсь по книге Стенли Липпмана &quot;Язык программирования C++ вводный курс&quot; 4 изд. Осваиваю главу 12.6 Статические члены класса. В...

Как правильно инициализировать статические члены класса? - C++
Я новичок и заранее прошу прощение за тупые вопросы. Имеются два класса: Solution и Pool. Pool состоит из нескольких обьектов класса...

Статические функции-члены - хорошо или плохо? - C++
Всем привет. Приведу пример такой архитектуры. Есть базовый интерфейс. От него наследуются много конкретных. И есть фабрика,...

Класс MyString через статические члены класса - C++
Всем доброго времени суток. Возникла необходимость решить задачу, хочу обратиться к знающим людям за подходящим к данной задаче...

Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия - C++
3. Одномерные массивы Дана последовательность действительных чисел а1, а2 ..., аn. Требуется домножить все члены последовательности...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
29.06.2010, 09:06     Зависимости и статические члены #2
Не компилируется по причине того, что один класс не знает о существовании второго.
Необходимо сделать декларации обоих классов до определения структуры классов и расположить реализацию методов классов после определения структуры обоих классов.
Примерно так:
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
#include <iostream>
using namespace std;
 
class hd1;
class hd2;
 
 
class hd1 {
public:
        hd2 getHd2() const;
        static const hd2 cst;
};
 
 
 
 
class  hd2 {
public:
        hd2(int val) {
                member = val;
        }
        hd1 getHd1() {
                return hd1();
        }
        int member;
};
 
 
const hd2 hd1::cst(4);
 
hd2 hd1::getHd2() const {
        return hd2(1);
};
 
int main() {
        hd1 hd;
        hd.getHd2();
 
           //здесь тоже ошибка.
        cout << hd1::cst.member << endl;
        int i;
        cin >> i;
 
        return 0;
};
Ответ Создать тему
Опции темы

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