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

Метод класса не желает вызываться - C++

Восстановить пароль Регистрация
 
Nicl
 Аватар для Nicl
0 / 0 / 0
Регистрация: 07.10.2008
Сообщений: 26
14.04.2009, 22:29     Метод класса не желает вызываться #1
Здравствуйте. Столкнулся с неясной для меня ошибкой.
Есть класс CLab. В его конструкторе нужно вызвать метод этого класса - generate_start.

.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
...
#pragma once
 
class CLab
{
 
public:
    int arr[6+2][6+2];
public:
    CLab(void);
    ~CLab(void);
    void generate_start();
    
public:
    bool start_ok(int x, int y);
    bool ok(int x, int y);
    void generate_main(int cord_x, int cord_y, int direction);
    void generate_sec();
    void generate_sec2();
    void delete_arr();
}
...
cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CLab::CLab(void)
{
 
...
    for (int i2 = 0; i2<8; i2++)
    {
        for (int i=0; i<8; i++)
        {
 
            arr[i2][i]=1;
        }
    }
 
    generate_start();
 
...
 
}
"#include "Lab.h"" присутствует.

Ругается на "неразрешенный внешний символ" в Lab.obj. Аналогично (за исключением адреса ошибки) при вызове этого метода из другого cpp-шника.

Отчего-то кажется, что ошибка чрезвычайно банальная и глупая.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2009, 22:29     Метод класса не желает вызываться
Посмотрите здесь:

C++ метод класса
C++ Метод за типом класса
C++ Метод класса
C++ Метод класса
C++ когда должен вызываться конструктор?
Деструктор отказывается нормально вызываться C++
C++ Указатели на метод класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,314
14.04.2009, 22:49     Метод класса не желает вызываться #2
Ну хорошо, метод generate_start объявлен в объявлении класса, а вот где он реализован? Покажи код реализации.
darkAngel
Технофашист
211 / 192 / 4
Регистрация: 11.03.2009
Сообщений: 850
15.04.2009, 07:42     Метод класса не желает вызываться #3
Я точку с запятой поставил после фигурных скобок в описании класса
И У мня норм компилируется на билдере.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
...
#pragma once
 
class CLab
{
 
public:
    int arr[6+2][6+2];
...
...
    void delete_arr();
}; // ЗДЕСЬ!!! ))
...

p.s. и даже объекты класса создаются и метод этот вызывают и всё замечательно
Deicider
 Аватар для Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
15.04.2009, 08:14     Метод класса не желает вызываться #4
неразрешенный внешний символ
Это однозначно означает только одно: компилятор не может найти, где реализована функция, а видит только объявление.
Nicl
 Аватар для Nicl
0 / 0 / 0
Регистрация: 07.10.2008
Сообщений: 26
15.04.2009, 15:02  [ТС]     Метод класса не желает вызываться #5
Цитата Сообщение от CheshireCat Посмотреть сообщение
Ну хорошо, метод generate_start объявлен в объявлении класса, а вот где он реализован? Покажи код реализации.
После конструктора идет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CLab::~CLab(void)
{
}
 
 
bool start_ok(int x, int y)
{
    ...
}
 
bool ok(int x, int y)
{
    ...
}
 
 
void generate_start()
{   
    ...
}
Или вот к примеру новый класс, с нуля:

cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "lol.h"
 
lol::lol(void)
{
    generate_start();
}
 
lol::~lol(void)
{
}
 
void generate_start()
{
 
    
 
}
h:
C++
1
2
3
4
5
6
7
8
9
#pragma once
 
class lol
{
public:
    lol(void);
    ~lol(void);
    void generate_start();
};
Аналогично, не работает. Пользуюсь Visual C++ 2008 EE.
Deicider
 Аватар для Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
15.04.2009, 15:14     Метод класса не желает вызываться #6
void generate_start()
{
...
}
Так это реализация глобальных функций!

Надо:
C++
1
2
3
4
void CLab::generate_start()
{
...
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2009, 15:19     Метод класса не желает вызываться
Еще ссылки по теме:

C++ Метод класса TList
C++ Должен ли вызываться деструктор при создании?
C++ Не работает метод класса
C++ Не работает метод класса
Указатель на метод класса C++

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

Или воспользуйтесь поиском по форуму:
Nicl
 Аватар для Nicl
0 / 0 / 0
Регистрация: 07.10.2008
Сообщений: 26
15.04.2009, 15:19  [ТС]     Метод класса не желает вызываться #7
Цитата Сообщение от Deicider Посмотреть сообщение
Так это реализация глобальных функций!
Спасибо большое, так и знал, что дурацкая до невозможности ошибка будет.
Yandex
Объявления
15.04.2009, 15:19     Метод класса не желает вызываться
Ответ Создать тему
Опции темы

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