C++复制结构未解析的链接

标签 c++ struct

<分区>

我正在用 C++ 编写日期包装器类

我想将 tm 结构复制到另一个结构,但它抛出未解析的外部链接

错误 2 error LNK2001: 未解析的外部符号“public: static struct tm * DateUtils::generateDateTimeStruct” (?generateDateTimeStruct@DateUtils@@2PAUtm@@A)

 class DateUtils
{
public:

    DateUtils()
    {

    }

    static int getTodaysDate();
    static tm * myDateTime;
    static void generateDateTimeStruct();

};

tm* DateUtils::myDateTime = NULL;

int DateUtils::getTodaysDate()
{
   // If i comment the calling, it does not throws an error
    generateDateTimeStruct();
    return DateUtils::myDateTime->tm_hour;
}
static void generateDateTimeStruct(){
        time_t now = time(0);
        static tm s;
        now = time(NULL);
        localtime_s(&s, &now);

        DateUtils::myDateTime = &s;

}

最佳答案

您需要在类声明之外(在某些 .cpp 文件中)定义此成员:

tm* DateUtils::myDateTime = NULL;

请注意,在定义其他成员时也会使用类名前缀:

在类声明中:

static int getTodaysDate();
static void generateDateTimeStruct();

但是类外的定义:

int DateUtils::getTodaysDate() { ... }
void DateUtils::generateDateTimeStruct() { ... }

关于C++复制结构未解析的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20948548/

相关文章:

c - 从文件中读取数据到结构体数组 (C)

json - 在 GO lang 中使用 API 时如何将 JSON 转换为 Go 类型定义

if-statement - Golang 新手,如果 else 不工作,由于某种原因嵌套

c - C使用构造函数创建结构数组

c - 为什么这个 C 代码不起作用?

c++ - 为 C++ 项目报告的奇怪的 Klocwork 问题

c++ - 禁用 g++ 的返回值优化

c++ - 在 Visual Studio IDE 中使用 C/C++ 预处理器宏

c++ - 找到文件流的结尾

c++ - Chromium源代码编译