C++ c++;对象和;未定义的引用;不同意复制
大家好:)这是一个被遗忘的带有“extern”的双重声明 问题 我认为这是不同文件之间的对象问题或“&”或“*”问题 我有错误行:C++ c++;对象和;未定义的引用;不同意复制,c++,object,cygwin,undefined-reference,C++,Object,Cygwin,Undefined Reference,大家好:)这是一个被遗忘的带有“extern”的双重声明 问题 我认为这是不同文件之间的对象问题或“&”或“*”问题 我有错误行: -lws2_32/tmp/ccBWAJ1F.o: dans la fonction « Z2iav »:/home/myfolder/ia.hpp:217: référence indéfinie vers « union_range »collect2: erreur: ld a retourné 1 code d'état d'exécution (未定义对u
-lws2_32/tmp/ccBWAJ1F.o: dans la fonction « Z2iav »:/home/myfolder/ia.hpp:217: référence indéfinie vers « union_range »collect2: erreur: ld a retourné 1 code d'état d'exécution
(未定义对union_范围的引用,执行1个代码状态)
我95%确信该错误是由于我使用了CarSet对象(union_范围)
在瓦卢尔主配电盘范围内的ia.hpp中(力矩()+1,联合范围)
我有一个非常接近的函数valeur_主板(矩()+1),没有任何错误
ia.hpp
错误在这里:
int valeur_main=valeur_main_板_范围(力矩()+1,联合_范围)
在我的文件ia.hpp中
#include "variable_calcule.hpp"
extern std::set<CardSet> union_range, resultat, range_joueur;
// the error was the "extern" to remove
void ia()
{
std::set<CardSet> union_range, resultat, range_joueur;
for (int j=0; j<10; j++)
{
range_joueur=range_action(action[0][j][1],j);
set_union(union_range.begin(),union_range.end(),range_joueur.begin(),range_joueur.end(),std::inserter(resultat,resultat.begin()));
union_range=resultat;
}
int valeur_main = valeur_main_board_range(moment()+1,union_range); // BUG HERE
}
#包括“variable_calcuble.hpp”
外部标准::设置联合范围、结果、范围;
//错误是要删除的“外部程序”
void ia()
{
标准::设置联合范围、结果、范围;
对于(int j=0;j,我在给出的代码片段中发现了union_范围,仅在函数ia中定义了这个名称
void ia()
{
analyse_action();
std::set<CardSet> union_range, resultat, range_joueur;
void ia()
{
分析_动作();
标准::设置联合范围、结果、范围;
这里union\U range是一个类型为std::set.
太长了,读不下去了。代码太多,不能用在一个典型的未定义的引用错误上。TL;DR;钉子是你的问题的一个要点!我已经按照你的建议编辑了。我在谷歌上搜索TL;Dr;但是不理解。它不是复制品(它是一个被遗忘的“外星人”,我从3天以来就没见过……)但是你的链接仍然很有趣…谢谢大家谢谢你我找到了错误:我在错误的地方搜索:错误在声明上我忘记删除“extern”从过去和复制外部std::set union\u range,resultat,range\u jouer;。您的回答帮助我使用控件+F在正确的位置进行搜索。非常感谢!
void ia()
{
analyse_action();
std::set<CardSet> union_range, resultat, range_joueur;