MSVC错误C2371 "redefinition; different basic types",除了我没有看到我在哪里重新定义任何东西
MSVC error C2371 "redefinition; different basic types", except I don't see where I'm redefining anything
完整的错误是
1>d:testsrcsearch.cpp(130): error C2371: 'Pos' : redefinition; different basic types
1> d:testsrcsearch.cpp(100) : see declaration of 'Pos'
- search.cpp,第 130 行:
Moves(*Pos);
(如果我省略这一行,代码编译时没有错误。 - 搜索.cpp,第 100 行:
Position *Pos = Mov.ChildPosition;
构造函数声明Moves
:Moves(Position &Pos);
Mov
是一个函数参数:void searchMove(Move &Mov)
为什么MSVC说我正在重新定义Pos
?
更新 1:根据要求:
- 主.cpp,第 32 行:
Position Pos(TESTF, TESTW, TESTB);
- 主.cpp,第 36 行:
searchRoot(Pos, 5);
- 移动.cpp,第 467 行:
Position *NextPosition = new Position(ParentPosition->flags^0x8000, white, black, theirs, ours);
- 移动.cpp,第 474 行:
Move *Mov = new Move(*NextPosition, piece, square1, square2, capture);
- 搜索.cpp,第 26 行:
void searchRoot(Position &Pos, U8 depth)
- 搜索.cpp,第 32 行:
Moves Mov(Pos);
Position
对象将传递给Move
和Moves
对象的构造函数,分别存储在ChildPosition
和ParentPosition
中。
更新 2:我用下面 David Norman 的建议替换了第 130 行,现在我收到五个"LNK2001:未解析的外部符号"错误。这很奇怪,因为它们都引用了在我的 search.h 文件中使用 extern
声明的变量。
更新3:我用static
替换了extern
,现在一切都编译了。我不明白为什么我会出现这样的错误。谁能向我解释一下?
如果您打算在第 130 行创建一个 Moves 对象,请尝试为其命名:
Moves dummyMoves(*Pos);
否则,您可能正在声明一个名为 Pos 的变量,类型为 Moves *
相关文章:
- 未定义的引用在哪里
- C++ 中的自定义异常:在哪里定义它们?
- 在标准中,模板参数的语法在哪里定义,例如,'std::function<int(char)>'?
- 具体来说,标准在哪里规定修改 const 对象是未定义的行为?
- CLion 是否支持自定义输入?如果是,我在哪里输入它们?
- 在C++中在哪里定义类常量?
- 存储在 C++ 编译器中的标识符的定义(不是声明)在哪里?
- size_t在哪里定义
- WriteConsoleOutputCharacterW - 我的新行在哪里?
- libc++ 的定义在哪里ios_base::clear
- 链接器如何知道外部函数的定义在哪里
- “结构ap_conf_vector_t”的定义在哪里
- 在C++中,std::cin 对象定义在哪里
- C++:我的新节点在哪里
- GL_UNSIGNED_INT_8_8_8_8_REV定义在哪里
- LPPICTURE定义在哪里?
- c++ 11标准中“顶级cv限定符”的定义在哪里?
- V8::Isolate定义在哪里?
- '$OutDir'在Visual Studio的脚本文件中定义在哪里?
- OpenCV SVM 教程?Mat_<float>(1,2) 的函数定义在哪里