2013-08-01 74 views
2

我在类有一个静态方法如在文件如下CONVERT.H没有定义错误C++静态方法声明

class Convert 
{ 
    public : 
    static string convertIntToStr(unsigned int integer);  
}; 

Convert.cpp

string 
Convert::convertIntToStr(unsigned int integer) 
{ 
    ostringstream ostr; 
    ostr << integer; 
    return ostr.str(); 
} 

我在使用此另一个.cpp文件中的其他类方法为Convert :: convertIntToStr,但是我得到链接错误,它表示对Convert :: convertIntToStr(unsigned int)的未定义引用。你能不能让我知道什么可能是错的?

+0

这是一个链接错误。所以我们需要看看你如何链接你的可执行文件。 –

+0

静态成员函数并不意味着从另一个翻译单元可见。如果您希望它可见,请在头文件中定义该函数。 –

+0

这可能真的很愚蠢,但你是否包含convert.h? –

回答

3

确保您正确链接了所有的目标文件。

4

这应该是一个评论,但我是新手,它不允许我添加评论。

对不起,如果这是一个愚蠢的问题,但你确定Convert.cpp被添加到您的项目?这听起来像Convert.cpp没有被编译到链接器的对象。

3

这是一个链接器错误,当它无法找到函数,全局变量等的定义时发生......你是否链接了所有的对象文件?

3

如果您已在名称空间中定义了转换,请确保在调用时包含该名称空间。类似于

namespace::Convert::convertIntToStr(...) 

或调用类位于相同的命名空间中。

1

认沽类转换成一个头文件,并使用相同的在其他.cpp文件

#ifndef CONVERT.H_ 
#define CONVERT.H_ 
class Convert 
{ 
    public : 
    static string convertIntToStr(unsigned int integer);  
}; 
#end if 

它作为在其他文件#include "convert.h"