Ошибка g ++ относительно неопределенной ссылки на typedef - PullRequest
2 голосов
/ 22 декабря 2011

Я пытаюсь скомпилировать простую тестовую программу, и один из заголовочных файлов, который я включаю, имеет следующий typedef

typedef const char* CharConst;
typedef unsigned int MyBool; 

позже в заголовочном файле, некоторые функции определяются с помощью этого typedef. такие вещи, как:

MyBool add_att(CharConst attr, const char*);

Я получаю сообщение об ошибке, когда пытаюсь вызвать эту функцию, например:

CharConst myconst = "some text";
const char* more_text = "more text";
add_att(myconst, more_text);

ошибка: неопределенная ссылка на `MyClass :: add_att (char const *, char const *) '

похоже, что компилятору не нравится тот факт, что первый аргумент был typedef'd в заголовочном файле. но это не против MyBool. компилятор только жалуется на определение CharConst.

Есть ли простой способ исправить это? какие-либо подсказки или намеки на то, что я могу сделать? я использую gcc версии 4.6.2

1 Ответ

0 голосов
/ 22 декабря 2011

Из ошибки похоже, что add_att - это метод класса;Я не вижу экземпляр вашего класса для вызова метода.Учтите это: MyClass * m = new MyClass ();m-> add_att (....)

В качестве альтернативы, убедитесь, что функция фактически определена, а не просто прототипирована.Кроме того, это может не иметь значения, но во время определения функции - используете ли вы typedef в аргументах функции?На самом деле это не должно иметь значения ... тип тот же.

...