nixp.ru v3.0

22 октября 2017,
воскресенье,
18:39:23 MSK

DevOps с компанией «Флант»
Antern написал 3 января 2007 года в 10:27 (602 просмотра) Ведет себя как мужчина; открыл 20 тем в форуме, оставил 84 комментария на сайте.

есть main.h

есть main.cpp(который инклудит main.h)

в хейдере описывается класс fghtr с конструктором.

при попытке компияции хейдера с классом пишет

[Linker error] undefined reference to `fighter::~fighter()'

делаю ему деструктор, описываю его всякими способами. не помогает.

что оно от меня хочетЪ? :’-(

Uncle Theodore
Antern
есть main.h

есть main.cpp(который инклудит main.h)

в хейдере описывается класс fghtr с конструктором.

при попытке компияции хейдера с классом пишет

[Linker error] undefined reference to `fighter::~fighter()'

делаю ему деструктор, описываю его всякими способами. не помогает.

что оно от меня хочетЪ? :’-(

Не сочти за обиду, приведи кусок кода, как он есть. Минимально. Потому как если класс у тебя fghtr, а деструктор ~fighter(), то сам понимаешь…

Good Luck,

UT

Uncle Theodore

Вот посмотри.

Вот так будет ошибка

//main.h
using namespace std;
class fighter
{
 public:
  fighter();
};
----------------------
//main.cpp
#include
#include "main.h"
int main()
{
  fighter ftr;
  cout << "allez normallez\n";
  return 0;
}

Вот такая

g++ main.cpp -o main

/tmp/ccWFPMbJ.o(.text+0×18): In function `main’:

: undefined reference to `fighter::fighter[in-charge]()'

collect2: ld returned 1 exit status

А вот так

//main.h
using namespace std;
class fighter
{
 public:
  fighter(){}; //<-- здесь отличие!
};
----------------------
//main.cpp
#include
#include "main.h"
int main()
{
  fighter ftr;
  cout << "allez normallez\n";
  return 0;
}

ошибки уже не будет

~$ g++ main.cpp -o main

~$ main

allez normallez

Это то, что тебе надо?

Good Luck,

UT

Antern

хоть немного и не это спрашивал, но всёравно большое спасибо . в частности за краткий гайд по gcc компилеру =)

вообще просто я уже после 12 часов кодинга моразм несу)

запустил MS_VC++2005 — оно мне сказало: что-то про инициализацию массива(добавить фигурные скобки только и всего надо было).

Если точнее: мне нужен был массив классов. и при попытке class_name object_name[8]=constructor(…);

линкер ругался на «деструктор». сделал class_name object_name[8]={constructor(…),и еще 7 раз конструктор}; — успокоилс0 компилер. как-то стыдно вже спрашивать еще про 1 фигню тк через 2 часа допру сам перечитав все учебники «для начинающих»..