未定义错误c ++声明的静态方法

时间:2013-08-01 16:37:51

标签: c++

我在类中有一个静态方法,如下文所示 Convert.h

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)的未定义引用。你能告诉我可能出现的问题吗?

5 个答案:

答案 0 :(得分:4)

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

很抱歉,如果这是一个愚蠢的问题,但您确定Convert.cpp已添加到您的项目中吗?听起来,Convert.cpp没有被编译成链接器的对象。

答案 1 :(得分:3)

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

答案 2 :(得分:3)

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

答案 3 :(得分:3)

如果已在命名空间中定义了Convert,请确保在调用时包含该命名空间。像

这样的东西
namespace::Convert::convertIntToStr(...)

或调用类位于同一名称空间中。

答案 4 :(得分:1)

将类转换放在头文件中,并将其包含在另一个.cpp文件中

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

将其作为#include "convert.h"包含在其他文件中。