可视C LNK2005与ENUM有关的错误
visual C++ LNK2005 error related to enum
我由于在标头文件中使用了枚举而遇到LNK错误2005。我不确定这是怎么回事。枚举通常包含在标题文件中吗?
这是我的代码。我有4个文件:board.h,board.cpp,solitaire.h,solitaire.cpp。
board.h:
#ifndef BOARD_H__
#define BOARD_H__
#include <iostream>
using namespace std;
const int NUM_ROWS = 6;
const int NUM_COLS = 6;
enum PieceType {
HasPiece, NoPiece, Invalid
};
PieceType board_data[NUM_ROWS][NUM_COLS];
#endif
board.cpp:
#include "board.h"
solitaire.h
#ifndef Solitaire_h__
#define Solitaire_h__
#include "board.h"
#endif
solitaire.cpp
#include "Solitaire.h"
int main() {
}
我得到的错误是
错误lnk2005" enum pieceType(* board_data)[6]" (?
谢谢!
问题与标题中的定义有关。这条线
PieceType board_data[NUM_ROWS][NUM_COLS];
在每个翻译单元中定义了一个新的数组board_data
,其中包含标题。要解决此问题,请声明外部数组,即
extern PieceType board_data[NUM_ROWS][NUM_COLS];
之后,在一个CPP文件中定义数组。
注意:此问题与enum
无关 - 您将与任何其他类型遇到相同的错误。
相关文章:
- 警告处理为错误这里有什么问题
- enum是C++中的宏变量还是整数变量
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 密钥错误: "Couldn't find enum caffe.EmitConstraint.EmitType"
- map.insert:"Invalid arguments"错误与 pair<enum,vector<*>>
- 可视C LNK2005与ENUM有关的错误
- 为什么我得到这个不是类或命名空间错误的'enum'?
- 在 c++ 中使用 Enum,没有错误,但不会输入
- 错误消息在 C++ 中显示为"expression must have integral or enum type"
- C2665在Visual 2010中带有lambda函数和enum,这是一个错误还是正常
- c++ Visual Studio, 'vc_attributes::YesNoMaybe' : 'enum' 类型重定义错误
- 新手错误与"expression must have integral or enum type"
- 当传递64位enum给Printf时的错误
- SMBIOS Enum取值.文档错误
- 在 QT 中,错误:ISO C++禁止转发对'enum'类型的引用
- 在c++ Visual Studio 2010中尝试声明enum时出现奇怪的错误
- C++错误:"Expression must have integral or enum type"