Image类是BMP类的子类。我试图从BMP类中使用一些方法TellHeight(),TellWidth()等来操作此方法中的图像。但是,当我创建一个BMP并尝试在其上调用函数时,在编译时我得到一个错误说
未定义的符号:
BMP :: BMP(),引自:
图像:: 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);
//}
//}
}
答案 0 :(得分:2)
未定义的符号是链接时间错误。链接二进制文件时,需要链接定义该函数的已编译代码。
如果BMP是外部库的一部分,您需要在链接行中添加以下内容:
-L/path/to/lib -lbmp
答案 1 :(得分:1)
BMP没有无参数构造函数,您必须使用其他方法来获取要使用的BMP实例。
答案 2 :(得分:1)
您的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) { /* .. */ }
}
答案 3 :(得分:0)
看起来更像是链接器错误。
中没有链接BMP库