`bool J(int from,int to,bool pd)`函数
```cpp
bool J(int from,int to,bool pd)
{
if(!p[to].jump) return 0;
if(pd)
{
for(int i=from%n+1; i!=from; i=i%n+1)
{
if(p[i].dead) continue;
if(p[to].id == "MP" && p[i].id == "FP") continue;//主猪 反猪
if((p[to].jump && p[to].id == "ZP") && p[i].id == "FP") continue;//已跳忠的猪 反猪
if((p[to].jump && p[to].id == "FP") && (p[i].id == "MP"||p[i].id == "ZP"))//已跳反的猪 主猪或忠猪
auto find_J = find_card(i , 'J');//这一行报错 qwq
if(find_J != p[i].card.end())
{
del_card(i , 'J');
p[i].jump = 1;//跳了
return !J(i , to , 0);
}
}
}
else
{
for(int i=from%n+1; i!=from; i=i%n+1)
{
if(p[i].dead) continue;
//把上面的条件全反过来判
if(!(p[to].id == "MP" && p[i].id == "FP")) continue;
if(!((p[to].jump && p[to].id == "ZP") && p[i].id == "FP")) continue;
if(!((p[to].jump && p[to].id == "FP") && (p[i].id == "MP"||p[i].id == "ZP"))) continue;
auto find_J = find_card(i , 'J');
if(find_J != p[i].card.end())
{
del_card(i , 'J');
p[i].jump = 1;//跳了
return !J(i , to , 1);
}
}
}
return 0;
}
```
by LittleN @ 2022-10-18 15:40:10
忘了说,`J`函数是用无懈可击的
by LittleN @ 2022-10-18 15:42:32
这是``warning``,不是``error``
by gybtx @ 2022-10-18 15:44:28
@[gybtx](/user/171729)
`warning`之后就是`error`
```
error: 'find_J' was not declared in this scope
256 | if(find_J != p[i].card.end())
| ^~~~~~
```
by LittleN @ 2022-10-18 15:46:48
我怀疑`error`是这个`warning`导致的
by LittleN @ 2022-10-18 15:47:33
[完整报错信息](https://www.luogu.com.cn/paste/utswjc21)
by LittleN @ 2022-10-18 16:00:14
``find_card``函数的返回值由``return find(p[x].card.begin() , p[x].card.end() , card);``决定,但是``find``函数并没有在此前声明
by gybtx @ 2022-10-18 16:07:31
@[gybtx](/user/171729)
`find`函数是`c++`头文件`algorithm`里带的啊
by LittleN @ 2022-10-18 16:25:05
@[LittleN](/user/531741)
草,看错了
252行有个``if``
你的``find_J``是在这个``if``下定义的,是局部变量。
而你下面这个``if(find_J!=...)``不属于上面这个``if``,所以不能使用``find_J``
```
error: 'find_J' was not declared in this scope
```
by gybtx @ 2022-10-18 17:24:24
@[gybtx](/user/171729)
orz 谢谢巨佬,我眼瞎了![qq_emoji: bx](https://z3.ax1x.com/2021/05/30/2VNbwQ.png)
by LittleN @ 2022-10-18 18:27:17