2013-07-02 3 views
2

Это, вероятно, что-то простое, но я не могу понять это.Неопределенная ссылка на статический метод

В моей main.cpp у меня есть:

Image image("/path/to/image.png"); 
int* h = ImageProcessor::dailyPrices(image); 

И в моем ImageProcessor.h у меня есть:

//Maybe something is wrong with this? I am trying to forward declare. 
namespace Magick 
{ 
class Image; 
} 

class ImageProcessor { 
public: 
ImageProcessor(); 
virtual ~ImageProcessor(); 
static int* dailyPrices(const Magick::Image& abp_chart); 
}; 

И в ImageProcessor.cpp У меня есть

int* dailyPrices(const Image& abp_chart) 
{ 

Но после попытки компиляции я получаю следующую ошибку в моем main.cpp:

path/to/VendBot.cpp:17: undefined reference to `ImageProcessor::dailyPrices(Magick::Image const&)' 
+0

'int * ImageProces sor :: dailyPrices (const Image & abp_chart) ' –

+0

Возможный дубликат [Неопределенная ссылка на функцию при связывании с g ++] (http://stackoverflow.com/questions/7043333/undefined-reference-to-a-function-when- linking-with-g) –

+0

Darn. Намного больше работы найти дубликат, чем отвечать. И никакого вознаграждения репутации. –

ответ

4

Вы пропускаете имя класса при определении dailyPrices функции:

int* ImageProcessor::dailyPrices(const Image& abp_chart) 
// ______________^ 
{ 
    // 
} 
+0

Yup каждый на 100% правильный. D'о! Примите этот ответ, как только это позволит мне. – Outback

0

Вам нужно добавить ImageProcessor:: к вашему определению метода:

int* ImageProcessor::dailyPrices(const Image& abp_chart) 
    ^^^^^^^^^^^^^^^^ 
0

dailyPrices должен быть в пространстве имен ImageProcessor :

int* ImageProcessor::dailyPrices(const Image& abp_chart)