C++ c++;复制结构未解析链接
我正在用c编写一个日期包装器类++ 我想将tm结构复制到另一个结构,但它会抛出未解析的外部链接 错误2错误LNK2001:未解析的外部符号“public:static struct tm*DateUtils::generateDateTimeStruct”(?generateDateTimeStruct@DateUtils@@2主持人@@A)C++ c++;复制结构未解析链接,c++,struct,C++,Struct,我正在用c编写一个日期包装器类++ 我想将tm结构复制到另一个结构,但它会抛出未解析的外部链接 错误2错误LNK2001:未解析的外部符号“public:static struct tm*DateUtils::generateDateTimeStruct”(?generateDateTimeStruct@DateUtils@@2主持人@@A) 您需要在类声明之外定义此成员(在某些.cpp文件中): 请注意,在定义其他成员时也会使用带有类名称的前缀: 在类别声明中: static int getT
您需要在类声明之外定义此成员(在某些.cpp文件中): 请注意,在定义其他成员时也会使用带有类名称的前缀: 在类别声明中:
static int getTodaysDate();
static void generateDateTimeStruct();
但在课堂之外的定义是:
int DateUtils::getTodaysDate() { ... }
void DateUtils::generateDateTimeStruct() { ... }
由于
myDateTime
已声明具有静态存储,因此需要为其分配一些内存
通常的做法是在一个编译单元中定义它;通常在源文件中:
tm* Wrapper::myDateTime = NULL;
您必须定义静态数据成员。它仅在类定义中声明,而未在类外部定义。在一些代码模块中编写
tm * Wrapper::myDateTime;
声明成员函数,但定义具有相同名称的非成员函数。将定义更改为
static void DateUtils::generateDateTimeStruct(){
// your code here
}
或者,根本不要定义类-它似乎只是放静态函数的地方,在这种情况下,名称空间更合适。您只声明了静态成员
myDateTime
,您需要定义itI,我也这样做了,但仍然有相同的错误。在标题中必须有与以前一样的静态tm*myDateTime;在某些代码模块的头之外,必须有tm*DateUtils::myDateTime;我没有看到包装器现在在哪里。我已经更新了代码,它在DateUtils::generateDateTimeStruct上抛出链接错误。它从一个静态方法调用一个静态方法。我只是不明白为什么它不工作而没有任何错误。函数必须定义为void DateUtils::generateDateTimeStruct(){即使我已经定义了它,它仍然抛出相同的错误error@meWantToLearn:请参阅我的编辑:)即使为其分配内存,它仍会抛出相同的错误
tm * Wrapper::myDateTime;
static void DateUtils::generateDateTimeStruct(){
// your code here
}