Неопределенные символы - PullRequest
0 голосов
/ 02 февраля 2010

Класс Image является подклассом класса BMP. Я пытаюсь использовать некоторые методы TellHeight (), TellWidth () и т. Д. Из класса BMP для манипулирования изображением в этом методе. Однако, когда я создаю BMP и пытаюсь вызвать на нем функции, при компиляции я получаю сообщение об ошибке

Неопределенные символы:

BMP :: BMP (), по ссылке:
Изображение :: invertcolors ()

Это метод invertcolors ():

void Image::invertcolors()
{
BMP img_invert;
img_invert.ReadFromFile("inverted.bmp");
//int height =img_invert.TellHeight();
//int width = img_invert.TellWidth();

//for(int i = 0; i<height; i++)
//{
//for(int j =0; j<width; j++)
//{
//RGBApixel* current = img_invert(j,i);
//current->Blue = 255 - (current->Blue);
//current->Green = 255 - (current->Green);
//current->Red = 255 - (current->Red);
//current->Alpha = 255 - (current->Alpha);
//}
//}
}

Ответы [ 4 ]

2 голосов
/ 02 февраля 2010

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

Если BMP является частью внешней библиотеки, вам нужно добавить что-то вроде этого в строку ссылки:

 -L/path/to/lib -lbmp
1 голос
/ 02 февраля 2010

Ваш класс BMP не имеет конструктора по умолчанию.Либо реализуйте его, либо заставьте Image правильно вызывать инициализатор своего родителя.Например,

// this class does not have a default constructor:
class Parent 
{
public:
   Parent( int a ) { /* .. */ }
};


// so this one must call its parent's constructor with a parameter
class Child : public Parent
{
public:
   Child() : Parent(42) { /* .. */ } 
}
1 голос
/ 02 февраля 2010

BMP не имеет конструктора без аргументов, вы должны использовать другое средство, чтобы использовать экземпляр BMP.

0 голосов
/ 02 февраля 2010

больше похоже на ошибку компоновщика. Библиотека BMP не связана в

...