0

我正在使用 MVS 2013,并在文件 ListStruct.h 中编写了结构。在链接期间,我收到错误 LNK2005:

error LNK2005: "public: __thiscall ListStruct::ListStruct(void)" (??0ListStruct@@QAE@XZ) already defined in projekt1.obj

现在 - ListStruct.h 的一部分

#ifndef _LISTSTRUCT_H_
#define _LISTSTRUCT_H_

#include "stdafx.h"

struct ListStruct{
    Member *head;                       //wskaznik na poczatek listy
    Member *tail;                       //wskaznik na koniec listy
    void AddMember(int value);
    void RemoveMember(int value);
    void Display();
    ListStruct();
};
#endif

我的主要部分:

#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
    ListStruct *base = new ListStruct;
    system("pause");
    return 0;
}

我究竟做错了什么?我必须创建 ListStruct.cpp 文件吗?它应该是什么样子?

4

1 回答 1

0

似乎在您没有显示的部分的标头 ListStruct.h 中有一个构造函数的定义

ListStruct();

由于此标头包含在多个模块中,因此链接器会发出构造函数已定义的错误。

您应该只在一个模块中定义构造函数,或者inline在标题中使用函数说明符定义它。

于 2015-03-22T14:53:42.433 回答