Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.86
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
#1

Переплетение классов: объявление и инициализация - C++

26.11.2009, 12:00. Просмотров 3628. Ответов 26
Метки нет (Все метки)

вощм... пишу программу... есть у меня например 2 класса: Object (объект) и tck (точка) мне необходимо сделать так чтобы в объекте содеражался массив точек, а в точке - укозатель на объект к которому она принадлежит. делаю все как положенно... в программу включаю заголовочные файлы с шаблонами классов, которые включаются в фалики спп с объявлениями классов... как сделать так что бы кампилятор в инициализации одного класса не ругался на неинициализированные поля и методы другого класса?

(прадва у меня еще дофига других классов но эти два самые главные)

Object.h:

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
#pragma once
 
 
class Object
{
    friend class tck;
    friend class NET;
    friend class speed;
    friend class force;
 
    char *name;
    
    
public:
    tck place;
    static int real_N;
    bool stat;
    int N_tck;
    float m;
    tck* contur;
    Object (float, float, float _m,int n); //центр, масса,количество точек
    ~Object();
    virtual void step ();
    virtual void step (force);
    void forr(force);
    void add(int, tck);
    virtual void drow();
    static NET** net;
    static int NET_n;
    bool operator == (Object &);
    Object *operator = (Object &);
};
tck.h:

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
#pragma once
 
 
 
class tck
{
 
    friend class Object;
    friend class NET;
    friend class speed;
    friend class force;
 
public:
    Object* my;
    float x;
    float y;
    float z;
    float m;
    force f;
    speed v;
 
    tck (Object *t, float _x, float _y, float _z):
    x (_x),
    y (_y),
    z (_z),
    f (this),
    v (this)
    {
        my=t;
    }
 
    tck (Object*);
 
    tck()
    {
        m=1;
        my=NULL;
        f.reload(nuLL,nuLL,nuLL,this);
        v.reload(nuLL,nuLL,nuLL,this);
    }
 
    ~tck()
    {
        
    }
    void reload(float,float,float,Object*);
    void freload(float,float,float);
    tck &operator = (tck &);
    void step (float,bool);
 
    
 
};
включение файлов:

C++
1
2
3
4
5
6
#include "force.h"
#include "speed.h"
#include "Object.h"
#include "Earth.h"
#include "tck.h"
#include "NET.h"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2009, 12:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переплетение классов: объявление и инициализация (C++):

С++, объявление классов - C++
Здравствуйте товарищи. Возникла следующая проблема: пусть есть два класса: А и В; в классе А есть переменная типа В, в классе В есть...

Как обойти ошибку (инициализация структур/классов, имеющих свойства) - C++ Builder
Как только структура объявлена с ключевым свойством property - так сразу исчезает возможность ее инициализации (более полный код,...

Объявление классов afxinet.h - Visual C++
Доброго времени суток. У меня есть концептуальный вопрос) Вот текст программы: #include "afxwin.h" #include "afxinet.h" #include...

Создание java классов в коде С++ и вызов Java методов и классов из C++ - C++ WinAPI
Здравствуйте! Собственно проблема вот в чем при клмпиляции получаю ошибки Первый этап обработки исключения в "0x00000000" в...

Объявление и инициализация переменных - C++
помогите исправить, пожалуйста.... Решение: #include <iostream.h> #include <math.h> double GetY (unsigned short int Number); ...

Объявление и инициализация динамической матрицы - C++
Ребят, только начал разбираться с матрицой. примерно я знаю как написать матрицу, но не знаю как написать динамическую матрицу, и чтоб...

26
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
29.11.2009, 23:46  [ТС] #16
появляются такие ошибки как
Ошибка 240 error C2027: использование неопределенного типа "Object" tck.cpp

Добавлено через 31 секунду
это то, от чего я пытался убежать изначально

Добавлено через 1 минуту
может включать файлы инициализации после объявления? отдельно?
0
Evg
Эксперт CАвтор FAQ
18246 / 6371 / 438
Регистрация: 30.03.2009
Сообщений: 17,628
Записей в блоге: 28
29.11.2009, 23:47 #17
Что такое файл инициализации? Покажи ВСЕ исходники, чтобы повторить можно было
0
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
29.11.2009, 23:49  [ТС] #18
блин... там дохерища кода... вощм это tck.cpp например, где реализацие всех методов: конструкторов, диструкторов и т.д.
0
Evg
Эксперт CАвтор FAQ
18246 / 6371 / 438
Регистрация: 30.03.2009
Сообщений: 17,628
Записей в блоге: 28
29.11.2009, 23:53 #19
Тогда выдели короткий пример, где проявляется ошибка. Если нет возможности повторить, и нет возможности посмотреть все исходники - то сложно что-то сказать полезного
0
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
29.11.2009, 23:56  [ТС] #20
мля там ваще полная(((

Добавлено через 1 минуту
исходники тут не помогут....

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Object::Object(float x=0, float y=5, float _m=1,int n=1):
m(_m),
N_tck (n)
{
    real_N++;
    name= new char[1];
    name[0]=real_N;
    stat=false;
    place.reload (x,y,0,this);
    contur=new tck [N_tck]; <<ошибка тут
    for (int i=0;i<N_tck;i++)
    {
        contur[i].reload(0,5+i,0,this);
        contur[i].m=m/N_tck;
    }
}
Ошибка 194 error C2061: синтаксическая ошибка: идентификатор "tck" object_.cpp

Добавлено через 28 секунд
вот например

Добавлено через 26 секунд
таких парядка 200 ошибок
0
Evg
Эксперт CАвтор FAQ
18246 / 6371 / 438
Регистрация: 30.03.2009
Сообщений: 17,628
Записей в блоге: 28
29.11.2009, 23:58 #21
А ты не "там", а с нуля. Возьми только Object.h и tck.h, выкинь оттуда всё лишнее и склепай из них программу. Просто по примерам из твоего первого поста, перед классом так же надо влепить предописания "class NET;" "class force;" и т.д.

Добавлено через 1 минуту
-MefistofeL-, ну ты же программист. Ну неужто не понимаешь, что по таким огрызкам кода твою проблему не решить?
0
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
30.11.2009, 00:01  [ТС] #22
мля.... это нереально написать снуля все так...на это нужно минимум 2 дня((

Добавлено через 58 секунд
я еще раз говорю!!! код тут не поможет!

Добавлено через 55 секунд
здесь достаточно понять, что два класса используют объекты друг друга и это побуждает ошибку
0
Evg
Эксперт CАвтор FAQ
18246 / 6371 / 438
Регистрация: 30.03.2009
Сообщений: 17,628
Записей в блоге: 28
30.11.2009, 00:05 #23
> здесь достаточно понять, что два класса используют объекты друг друга и это побуждает ошибку

Я это понял. И написал тебе, как это проблема рулится
0
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
30.11.2009, 00:06  [ТС] #24
о_О где?

#pragma once????
0
Evg
Эксперт CАвтор FAQ
18246 / 6371 / 438
Регистрация: 30.03.2009
Сообщений: 17,628
Записей в блоге: 28
30.11.2009, 00:13 #25
В посте 13. Проблема именно в этом. Либо есть какая-то ещё, которую в твоих постах я так и не увидел
0
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
30.11.2009, 00:24  [ТС] #26
нееет..... ругается имено методы... когда я уже выделяю память под объект класса и так далее... она вообще мне жоско пишет, что не знает этого класса
0
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
04.12.2009, 22:11  [ТС] #27
Трабла почти решена... но появилась проблемка error LNK2001: неразрешенный внешний символ причом ругается на объекты моих классов это и это к моему случаю точно не относятся... посмотрел еще здесь. откомпалировал свои классы но толком не нашел, куда их впихнуть - попробовал туда, где либы(доп зависимости).. не помогло((( снова надеюсь на отзывчивость!!!

Добавлено через 8 минут
предварительная компиляция к томужы вызывает ошибку переопределения((((
0
04.12.2009, 22:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2009, 22:11
Привет! Вот еще темы с ответами:

Основные типы данных, объявление и инициализация переменных - C++
ребятки, попробуйте 1) Объявить в программе переменные и константы (выбор обосновать) для хранения следующих данных: а) число , ...

Инициализация и объявление переменной - Ruby
Утро доброе, class Content def zagolovok(str) counter(1) print...

Объявление и инициализация переменной на месте - SQL Server
А можно ли при объявлении переменной инициализировать её результатом выборки? Ну что-то типа DECLARE @city smallint=SELECT CityID FROM...

Инициализация и объявление переменной в методе - Ruby
Как методу задать не фиксированное количество переменных? К примеру от 0 до 2-х def method(a,b) &quot;bla&quot; end #... #чтобы можно...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Опции темы

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