неопределенная ссылка на 'abc :: abc ()' с ошибкой гнома: появляется смещение - PullRequest
1 голос
/ 29 марта 2012

Я объявляю объект:

#include "abc.h"

class xxx
{
public: 
  xxx();
  ~xxx();
  abc* q;
...
};

в файле .cpp. Я делаю следующую ошибку

this->q=new abc(); <в этой строке с неопределенной ссылкой на <code>abc::abc()

В консоли также появляется эта ошибка:

Ошибка дварфа: смещение (76195) больше или равно размеру .debug_str (1472).

кто-нибудь знает, что может быть не так?Я использую затмение, Fedora 14

Ответы [ 3 ]

1 голос
/ 29 марта 2012

неопределенная ссылка на abc::abc()

Это ошибка связывания, которая говорит вам, что компоновщик не может найти определение для abc::abc().

Скорее всего, вы только объявили, но не определили конструктор без аргументов для класса abc.
В вашем cpp файле вы должны иметь:

abc::abc()
{

}

Если он у вас уже есть, вам следует убедиться, что исходный файл cpp, который имеет это определение, правильно связан с вашим проектом.

0 голосов
/ 29 марта 2012

Похоже, что реализация класса abc не включена в сборку. Добавьте файл abc.cpp в сборку.

0 голосов
/ 29 марта 2012

this->q=new abc(); <-ошибка в этой строке с неопределенной ссылкой на а :: а () </p>

Из вашей ошибки кажется, что у вас есть только объявление abc::abc(), а нет определения Определите abc::abc() в исходном файле или inline в заголовочном файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...