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

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

Войти
Регистрация
Восстановить пароль
 
Max_92
25 / 7 / 2
Регистрация: 26.04.2010
Сообщений: 205
#1

Как создать экземпляр этого класса? - C++

15.09.2013, 12:52. Просмотров 434. Ответов 6
Метки нет (Все метки)

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
#pragma once
 
template<typename T>
class fgFSM
{
public:
  fgFSM() : _time_in_cur_state(0.0f), _cur_state(-1)
  {
  }
 
  virtual void BeginState( T state ) {}
  virtual void UpdateState( T state ) {}
  virtual void EndState( T state ) {}
 
  void SetState( T state )
  {
    EndState( (T)_cur_state );
    _cur_state = state;
    _time_in_cur_state = 0.0f;
    BeginState( (T)_cur_state );
  }
 
  void UpdateFSM( float delta_time )
  {
    if( _cur_state != -1 )
    {
      _time_in_cur_state+=delta_time;
      UpdateState( (T)_cur_state );
    }
  }
 
  float GetTimeInCurState() { return _time_in_cur_state; }
  T GetState() { return (T)_cur_state; }
 
private:
  float _time_in_cur_state;
  int _cur_state;
};
 
enum EState
{
  STT_OFF = -1, // optional, -1 is the initial state of the fsm
  STT_WALK,
  STT_RUN,
  STT_STOP,
  STT_EAT
};
 
class ObjectUsingFSM: public fgFSM<EState>
{
public:
  // ...
  void UpdateState( EState t );
  void BeginState( EState t );
  void EndState( EState t );
  // ...
};

Как правильно в этом случае создать объект класса ObjectUsingFSM и правильно юзать перечислимый тип?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2013, 12:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как создать экземпляр этого класса? (C++):

Создание статической функции класса, которая принимает экземпляр этого же класса как объект - C++
Привет. Есть такой код class Model { public: Model(); Model(int verticesSize, int facesSize); ~Model(); static void...

Как сделать членом класса экземпляр этого же класса - C++
class Operation { public: bool type; //true = operation, false = number char Operator; Operation L_Op; Operation R_Op; ...

Может ли метод класса возвращать экземпляр этого же класса? - C++
такой вопрос, реально что бы функция класса имела тип класса(возвращала класс), то есть типа так: class c1{ c1 f1(); } если да, то...

Можно ли получить ссылку на экземпляр класса по полю этого экземпляра - C++
схематично код такой - class A { static void staticMethodA(SomeClass* memberA); SomeClass* memberA; } void...

Создать экземпляр класса без явного указания членов класса - C++
Если у меня есть два конструктора, один из которых по умолчанию, а второй явный. Я почему-то не могу создать экземпляр класса без явного...

как исправить Ошибка 8 error C2259: Tabl: невозможно создать экземпляр абстрактного класса - C++
имеется абстрактный класс, у нее есть 4 виртуальных функций: запись и чтение с помощью С и С++ имеется класс Tabl производный от...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
15.09.2013, 13:44 #2
Так?
C++
1
2
ObjectUsingFSM obj;
obj.UpdateState(STT_OFF);
0
Max_92
25 / 7 / 2
Регистрация: 26.04.2010
Сообщений: 205
15.09.2013, 13:44  [ТС] #3
ViktorKozlov, нет, вываливает ошибки
0
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
15.09.2013, 13:47 #4
Какие?
0
Max_92
25 / 7 / 2
Регистрация: 26.04.2010
Сообщений: 205
15.09.2013, 13:57  [ТС] #5
ViktorKozlov, для начала признаюсь, в этой среде программировать не умею. Я создал проект Windows Forms с именем FSM. Куда мне всю вот эту кучу закинуть? В какой файл? Где создавать объекты? Если вставить вот это:
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
const int num = 5;
 
enum EState
{
  STT_OFF = -1, // optional, -1 is the initial state of the fsm
  STT_WALK,
  STT_RUN,
  STT_STOP,
  STT_EAT
} bot[num];
 
 
class fgFSM
{
public:
  fgFSM() : _time_in_cur_state(0.0f), _cur_state(-1)
  {
  }
 
  virtual void BeginState( EState state ) {}
  virtual void UpdateState( EState state ) {}
  virtual void EndState( EState state ) {}
 
  void SetState( EState state )
  {
    EndState( (EState)_cur_state );
    _cur_state = state;
    _time_in_cur_state = 0.0f;
    BeginState( (EState)_cur_state );
  }
 
  void UpdateFSM( float delta_time )
  {
    if( _cur_state != -1 )
    {
      _time_in_cur_state+=delta_time;
      UpdateState( (EState)_cur_state );
    }
  }
 
  float GetTimeInCurState() { return _time_in_cur_state; }
  EState GetState() { return (EState)_cur_state; }
 
private:
  float _time_in_cur_state;
  int _cur_state;
};
 
 
 
 
class ObjectUsingFSM: public fgFSM
{
public:
  // ...
  void UpdateState( EState t );
  void BeginState( EState t );
  void EndState( EState t );
  // ...
};
в FSM.cpp после "using namespace FSM;", то как минимум в появляющихся обработчиках событий в Form1.h все эти классы и прочее будут не видны.

А ошибка в "ObjectUsingFSM obj1;" такая:
0
Миниатюры
Как создать экземпляр этого класса?  
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
15.09.2013, 14:10 #6
Max_92, у вас
C++
1
2
3
  void UpdateState( EState t );
  void BeginState( EState t );
  void EndState( EState t );
определены?
0
Max_92
25 / 7 / 2
Регистрация: 26.04.2010
Сообщений: 205
15.09.2013, 14:16  [ТС] #7
ViktorKozlov, нет. после определения заработало.

Добавлено через 4 минуты
почему обработчики добавляются в Form1.h и код надо писать там ? верх тупости по-моему. всё то, что объявлено в FSM.cpp, - недоступно. Как правильно-то?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2013, 14:16
Привет! Вот еще темы с ответами:

Создать экземпляр класса по ссылке экземпляра класса - C++
Есть класс для обработки клиентов // Абстрактный class ClientProcessing { }; Я создаю от него наследника class...

Создать объект внутри класса, который может вызывать функцию этого класса - C++
Ребята помогите уже несколько дней мучаюсь. Хочу сделать программу в консоле демонстрации работы лифта в здании 2 этажа. Сделал класс...

Невозможно создать экземпляр абстрактного класса - C++
work.cpp #include &quot;student.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;windows.h&gt; #include...

Не получается создать экземпляр абстрактного класса - C++
в общем я очень тупой, буду благодарен за умные советы, имеется класс object и наследуемые от него triangle и uravn вот фрагмент из мэйна ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.09.2013, 14:16
Ответ Создать тему
Опции темы

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