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

not defined error c++ Static methods declared

本文关键字:c++ 静态方法 错误 声明 未定义      更新时间:2023-10-16

在文件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)的未定义引用。你能告诉我可能出了什么问题吗?

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

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

确保正确链接所有对象文件。

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

如果您在命名空间中定义了Convert,请确保在调用时包含该命名空间。类似的东西

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

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

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

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

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