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

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

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

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

14.04.2009, 22:29. Просмотров 542. Ответов 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-шника.

Отчего-то кажется, что ошибка чрезвычайно банальная и глупая.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2009, 22:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод класса не желает вызываться (C++):

Как передать в метод класса Menu указатель на метод дочернего класса? - C++
Как передать в метод базового класса указатель на метод дочернего: class Menu() { protected: setCallback(*********); //...

Как описать метод класса? Как двумя способами описать инлайнируемый метод класса? Что такое this? - C++
Раздел 1. Строки: нужен фрагмент кода. Обязательно используйте функции для работы со строками. Как найти адрес последнего символа строки?...

Создать для класса виртуальный метод, возвращающий уникальный идентификатор класса - C++
В курсаче по ООП сказано создать для класса виртуальный метод,возвращающий уникальный идентификатор класса. Вопрос в том, что это такое?

Может ли метод родительского класса обратиться к полю дочернего класса - C++
Может ли метод родительского класса обратиться к полю дочернего класса?

Как в методе класса вызвать другой метод того же класса? - C++
class mate { public: int AplusB(int A, int B) { return A+B; } int AplusBplusC(int A, int B, int C)

Чем отличается шаблонный метод класса от шаблонного класса? - C++
Чем отличается шаблонный метод класса от шаблонного класса???????ПЛИЗ!!!!Если можно немного ссылок на летературу

6
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,379
14.04.2009, 22:49 #2
Ну хорошо, метод generate_start объявлен в объявлении класса, а вот где он реализован? Покажи код реализации.
0
darkAngel
Технофашист
216 / 199 / 4
Регистрация: 11.03.2009
Сообщений: 883
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. и даже объекты класса создаются и метод этот вызывают и всё замечательно
0
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
15.04.2009, 08:14 #4
неразрешенный внешний символ
Это однозначно означает только одно: компилятор не может найти, где реализована функция, а видит только объявление.
0
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.
0
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()
{
...
}
1
Nicl
0 / 0 / 0
Регистрация: 07.10.2008
Сообщений: 26
15.04.2009, 15:19  [ТС] #7
Цитата Сообщение от Deicider Посмотреть сообщение
Так это реализация глобальных функций!
Спасибо большое, так и знал, что дурацкая до невозможности ошибка будет.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2009, 15:19
Привет! Вот еще темы с ответами:

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

Указатель на метод класса в качестве аргумента метода класса - C++
Функция _createFun вызывается для создания ХХХ в основном классе. Но вот потребовалось создать ХХХ в дополнительном классе. Вопрос: как...

Как в классе А у объекта класса B вызвать метод класса B ? - C++
Есть Класс A и класс B . В классе B лежит объект типа ArrayList , назовём его arrayList, в этом же классе есть метод push() . Возможно ли в...

Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра? - C++
header.h template &lt;class T&gt; class MyVector { public: void swap(MyVector&lt;T&gt;Vector); } template &lt;class T&gt; void...


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

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

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