2

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

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

转换.cpp

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

我在另一个 .cpp 文件中的一些其他类方法中使用它作为 Convert::convertIntToStr,但我得到链接错误,它表示未定义对 Convert::convertIntToStr(unsigned int) 的引用。你能告诉我有什么问题吗?

4

5 回答 5

4

这真的应该是一条评论,但我是新来的,它还不允许我添加评论。

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

于 2013-08-01T16:43:44.123 回答
3

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

于 2013-08-01T16:40:46.650 回答
3

如果您在命名空间中定义了转换,请确保在调用时包含该命名空间。就像是

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

或者调用类在同一个命名空间中。

于 2013-08-01T16:51:41.903 回答
3

这是一个链接器错误,当它找不到函数、全局变量等的定义时会发生...您是否链接了所有目标文件?

于 2013-08-01T16:43:57.007 回答
1

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

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

#include "convert.h"像在另一个文件中一样包含它。

于 2013-08-01T17:37:38.663 回答