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

Составить прототип класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вводится номер месяца М и дня Д. Определить день недели с датой М и Д http://www.cyberforum.ru/cpp-beginners/thread1103228.html
Вводится номер месяца М и дня Д. Определить день недели с датой М и Д, считая, что год начинается с понедельника. Заранее благодарю за помощь!
C++ Опциональный ссылочный аргумент функции Некоторые аргументы функции можно сделать опциональными, просто поставив значение по умолчанию, а затем проверяя, изменилось ли оно : void someFoo(int important, int *additional = NULL) { if (additional != NULL) { //do someFoo } } Можно ли сделать так же для ссылочного типа? void someFoo(int important, int &additional) // ??? http://www.cyberforum.ru/cpp-beginners/thread1103217.html
Определить номер максимальной по величине цифры C++
помогите написать 2 программы на с++ (если можно попроще) 1)Определить номер максимальной по величине цифры. 2)Определить, является ли число палиндромом.
C++ Ошибка с типами в шаблоне функции
1>c:\users\nano\desktop\visual studio\homework\homework\homework.cpp(10): error C2563: несоответствие в списке формальных параметров 1>c:\users\nano\desktop\visual studio\homework\homework\homework.cpp(12): error C2563: несоответствие в списке формальных параметров 1>c:\users\nano\desktop\visual studio\homework\homework\homework.cpp(14): error C2065: chek: необъявленный идентификатор
C++ Подключение SDL 2.0 MinGW http://www.cyberforum.ru/cpp-beginners/thread1103192.html
Доброго времени суток. Закинул все файлы SDL по своим местам, но при компиляции через командную строку выводится следующее: g++ -Wall -static -o sdltest.exe sdltest.cxx -lmingw32 -lSDL2main -lSDL2 C:\DOCUME~1\FlGHTER\LOCALS~1\Temp\ccKLWAw3.o:sdltest.cxx:(.text+0xe): undefined reference to `SDL_Init' C:\DOCUME~1\FlGHTER\LOCALS~1\Temp\ccKLWAw3.o:sdltest.cxx:(.text+0x13): undefined reference to...
C++ Назначение действия на флаг AppendMenu Всю ночь пыталась сделать свое пианинко , но все уперлось в AppendMenu :( Делала по туторам, т.к. еще только осваиваю cpp,хотя вроде как получается! Проблема моя в следующем. На сколько я поняла, AppendMenu создает флаги и если на кнопки и button я могу забиндить, то флаги не получается - просто не знаю как. Пыталась, как и с button сделать типа если клавиша проигрывается вот так... подробнее

Показать сообщение отдельно
Kadet89
2 / 2 / 0
Регистрация: 18.09.2009
Сообщений: 107
23.02.2014, 10:43     Составить прототип класса
Программный модуль передает мне указатель на класс CPhysHinge. Чтобы получить доступ к его методам мне нужен его прототип.
Имеется следующий код:

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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
class CPhysHinge : public CPhysConstraint, public IVPhysicsWatcher
{
    DECLARE_CLASS( CPhysHinge, CPhysConstraint );
 
public:
    void Spawn( void );
    IPhysicsConstraint *CreateConstraint( IPhysicsConstraintGroup *pGroup, const hl_constraint_info_t &info )
    {
        if ( m_hinge.worldAxisDirection == vec3_origin )
        {
            DevMsg("ERROR: Hinge with bad data!!!\n" );
            return NULL;
        }
        GetBreakParams( m_hinge.constraint, info );
        m_hinge.constraint.strength = 1.0;
        // BUGBUG: These numbers are very hard to edit
        // Scale by 1000 to make things easier
        // CONSIDER: Unify the units of torque around something other 
        // than HL units (kg * in^2 / s ^2)
        m_hinge.hingeAxis.SetAxisFriction( 0, 0, m_hingeFriction * 1000 );
 
        int hingeAxis;
        if ( IsWorldHinge( info, &hingeAxis ) )
        {
            info.pObjects[1]->BecomeHinged( hingeAxis );
        }
        else
        {
            RemoveSpawnFlags( SF_CONSTRAINT_ASSUME_WORLD_GEOMETRY );
        }
 
        return physenv->CreateHingeConstraint( info.pObjects[0], info.pObjects[1], pGroup, m_hinge );
    }
 
    void DrawDebugGeometryOverlays()
    {
        if ( m_debugOverlays & (OVERLAY_BBOX_BIT|OVERLAY_PIVOT_BIT|OVERLAY_ABSBOX_BIT) )
        {
            NDebugOverlay::Line(m_hinge.worldPosition, m_hinge.worldPosition + 48 * m_hinge.worldAxisDirection, 0, 255, 0, false, 0 );
        }
        BaseClass::DrawDebugGeometryOverlays();
    }
 
    void InputSetVelocity( inputdata_t &inputdata )
    {
        if ( !m_pConstraint || !m_pConstraint->GetReferenceObject() || !m_pConstraint->GetAttachedObject() )
            return;
    
        float speed = inputdata.value.Float();
        float massLoad = 1;
        int numMasses = 0;
        if ( m_pConstraint->GetReferenceObject()->IsMoveable() )
        {
            massLoad = m_pConstraint->GetReferenceObject()->GetInertia().Length();
            numMasses++;
            m_pConstraint->GetReferenceObject()->Wake();
        }
        if ( m_pConstraint->GetAttachedObject()->IsMoveable() )
        {
            massLoad += m_pConstraint->GetAttachedObject()->GetInertia().Length();
            numMasses++;
            m_pConstraint->GetAttachedObject()->Wake();
        }
        if ( numMasses > 0 )
        {
            massLoad /= (float)numMasses;
        }
        
        float loadscale = m_systemLoadScale != 0 ? m_systemLoadScale : 1;
        m_pConstraint->SetAngularMotor( speed, speed * loadscale * massLoad * loadscale * (1.0/TICK_INTERVAL) );
    }
 
    void InputSetHingeFriction( inputdata_t &inputdata )
    {
        m_hingeFriction = inputdata.value.Float();
        Msg("Setting hinge friction to %f\n", m_hingeFriction );
        m_hinge.hingeAxis.SetAxisFriction( 0, 0, m_hingeFriction * 1000 );
    }
 
    virtual void Deactivate()
    {
        if ( HasSpawnFlags( SF_CONSTRAINT_ASSUME_WORLD_GEOMETRY ) )
        {
            if ( m_pConstraint && m_pConstraint->GetAttachedObject() )
            {
                // NOTE: RemoveHinged() is always safe
                m_pConstraint->GetAttachedObject()->RemoveHinged();
            }
        }
 
        BaseClass::Deactivate();
    }
    
    void NotifyVPhysicsStateChanged( IPhysicsObject *pPhysics, CBaseEntity *pEntity, bool bAwake )
    {
#if HINGE_NOTIFY
        Assert(m_pConstraint);
        if (!m_pConstraint) 
            return;
 
        // if something woke up, start thinking. If everything is asleep, stop thinking.
        if ( bAwake )
        {
            // Did something wake up when I was not thinking?
            if ( GetNextThink() == TICK_NEVER_THINK )
            {
                m_soundInfo.StartThinking(this, 
                    VelocitySampler::GetRelativeAngularVelocity(m_pConstraint->GetAttachedObject(), m_pConstraint->GetReferenceObject()) ,
                    m_hinge.worldAxisDirection
                    );
 
                SetThink(&CPhysHinge::SoundThink);
                SetNextThink(gpGlobals->curtime + m_soundInfo.getThinkRate());
            }
        }
        else
        {
            // Is everything asleep? If so, stop thinking.
            if ( GetNextThink() != TICK_NEVER_THINK             &&
                m_pConstraint->GetAttachedObject()->IsAsleep() &&
                m_pConstraint->GetReferenceObject()->IsAsleep() )
            {
                m_soundInfo.StopThinking(this);
                SetNextThink(TICK_NEVER_THINK);
            }
        }
#endif
    }
 
 
#if HINGE_NOTIFY
    virtual void OnConstraintSetup( hl_constraint_info_t &info )
    {
        CBaseEntity *pEntity0 = info.pObjects[0] ? static_cast<CBaseEntity *>(info.pObjects[0]->GetGameData()) : NULL;
        if ( pEntity0 && !info.pObjects[0]->IsStatic()  )
        {
            WatchVPhysicsStateChanges( this, pEntity0 );
        }
        CBaseEntity *pEntity1 = info.pObjects[1] ? static_cast<CBaseEntity *>(info.pObjects[1]->GetGameData()) : NULL;
        if ( pEntity1 && !info.pObjects[1]->IsStatic()  )
        {
            WatchVPhysicsStateChanges( this, pEntity1 );
        }
        BaseClass::OnConstraintSetup(info);
    }
 
    void SoundThink( void );
    // void Spawn( void );
    void Activate( void );
    void Precache( void );
#endif
 
    DECLARE_DATADESC();
 
 
#if HINGE_NOTIFY
protected:
    ConstraintSoundInfo m_soundInfo;
#endif
 
private:
    constraint_hingeparams_t m_hinge;
    float m_hingeFriction;
    float   m_systemLoadScale;
    bool IsWorldHinge( const hl_constraint_info_t &info, int *pAxisOut );
};
Вопрос такой - можно ли составить нормальный прототип если не определены RemoveSpawnFlags, physenv, m_debugOverlays, NDebugOverlay, HasSpawnFlags. Т.е. некоторые переменные используемые в методах этого класса не определены. И если это можно сделать, то какую часть кода следует удалить.
Переменная HINGE_NOTIFY = false
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru