问题描述
我正在使用 C++ 编写日期包装类
I am working on a date wrapper class in c++
我想将 tm 结构复制到另一个结构,但它抛出未解析的外部链接
I want to copy the tm structure to another structure, but it throws unresolved external link
错误 2 错误 LNK2001: 未解析的外部符号 "public: static struct tm * DateUtils::generateDateTimeStruct" (?generateDateTimeStruct@DateUtils@@2PAUtm@@A)
Error 2 error LNK2001: unresolved external symbol "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 文件中)定义此成员:
You need to define this member outside the class declaration (in some .cpp file):
tm* DateUtils::myDateTime = NULL;
请注意,在定义其他成员时也使用类名作为前缀:
Note that prefixing with the name of the class is used while defining the other members as well:
在类声明中:
static int getTodaysDate();
static void generateDateTimeStruct();
但是类外的定义:
int DateUtils::getTodaysDate() { ... }
void DateUtils::generateDateTimeStruct() { ... }
这篇关于c ++复制结构未解析的链接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!