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

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

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

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

14.04.2009, 22:29. Просмотров 534. Ответов 6
Метки нет (Все метки)

Здравствуйте. Столкнулся с неясной для меня ошибкой.
Есть класс 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++
Возможно я делаю что-то не так, но конструктор родительского класса вызывается лишний раз. код: #include &lt;iostream&gt; #include...

Деструктор отказывается нормально вызываться - C++
Здравствуйте, столкнулся с такой проблемой. Сидел игрался с динамическими переменными, и вот накодил. #include &lt;iostream&gt; #include...

Должен ли вызываться деструктор при создании? - C++
есть класс с конструктором и деструктором #ifndef PROCESSOR_H #define PROCESSOR_H #include &quot;Problem.h&quot; #include &lt;list&gt; ...

Метод класса - C++
Есть кусок кода: namespace Head { using namespace std; // методы класса void Csk::set(char nazv1,char prepod1,int...

метод класса - C++
Такой вопрос. Необходимо сделать метод класса который бы оперировал с двумя объектами одновременно. В одной книге был пример сравнения двух...

Метод класса - C++
Что дает спецификатор const в методе? char *getBuffer() const { return m_buffer; };

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,363
14.04.2009, 22:49     Метод класса не желает вызываться #2
Ну хорошо, метод generate_start объявлен в объявлении класса, а вот где он реализован? Покажи код реализации.
darkAngel
Технофашист
214 / 195 / 4
Регистрация: 11.03.2009
Сообщений: 860
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
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
15.04.2009, 08:14     Метод класса не желает вызываться #4
неразрешенный внешний символ
Это однозначно означает только одно: компилятор не может найти, где реализована функция, а видит только объявление.
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
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     Метод класса не желает вызываться
Еще ссылки по теме:

Реализовать функцию-член, которая будет вызываться по таймеру (желательна точность до 1 мс) - C++
Добрый день. У меня есть класс, внутри него нужно сделать функцию, которая будет вызываться по таймеру. Пробовал делать OnTimer, но...

Указатель на метод класса - C++
Приветствую. Нужна помощь. Не работает указатель в данной программе: #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; ...

Ссылка на метод класса - C++
если кратко то задача такова надо передать адрес метода класа.как это можно сделать?

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


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

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

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