【发布时间】:2016-11-29 04:07:56
【问题描述】:
我创建了 2 个头文件。 ListA.h 和 ListN.h
他们都自己使用自己独特的类列表。当我编译我的程序时(即使他们无法知道另一个存在,它会说以下错误)
我很确定它不应该是一个重新定义,但它显然是。任何帮助表示赞赏。
ListA.h
#ifndef __LISTA_H_
#define __LISTA_H_
#include <iostream>
using namespace std;
class List{
public:
List(int = 0);
List(const List&);
~List();
};
#endif
ListN.h
#ifndef __LISTN_H_
#define __LISTN_H_
#include <iostream>
using namespace std;
class List{
public:
List(int = 10);
List(const List&);
~List();
};
#endif
ListA.cpp
#include "ListA.h"
using namespace std;
List::List(int mySize)
{
//...
}
ListN.cpp
#include "ListN.h"
#include <iostream>
using namespace std;
List::List(int size)
{
//...
}
主要
#include <iostream>
#include "ListN.h"
using namespace std;
int main()
{
List myList;
return 0;
}
【问题讨论】:
-
他们都在同一个项目中,这可能与它有关。
-
[basic.def.odr] "给定一个名为 D 的实体在多个翻译单元中定义,那么 D 的每个定义都应包含相同的标记序列..." 您违反了这条规则,因为您在不同的翻译单元中定义了一个名为
List的实体。
标签: c++ class scope redefinition