C++ 对象和"undefined reference to"不同意重复

c++ object and "undefined reference to" not agree with duplicated

本文关键字:不同意 to undefined 对象 C++ reference      更新时间:2023-10-16

大家好:)这是一个被遗忘的带有"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

(未定义对union\urange的引用,执行1个代码状态)

我有95%的把握该错误是由于我使用了CarSet对象(union\urange)在ia.hpp中,valeur_main_board_range(moment()+1,union\urange)

我有一个非常接近的函数valeur_main_board(moment()+1),没有任何错误。

ia.hpp

错误在这里:int valeur_main=valeur_main_board_range(moment()+1,union\urange)

在我的文件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
}

valeur_main_board_range()代码(使用union\urange)

union\range include from#include"variable_calcule.hpp"包含#include"analyse_action.hpp"

#include "CardSet.h"
using namespace pokerstove;
using namespace std;
int valeur_main_board_range(int nb_carte, std::set<CardSet> &range)     { 
int dessus=0;
    [...]
return dessus;  
}   

如果我找到了答案,我将为未来的读者删除不必要的代码。目前我更喜欢放太多。。。但如果你想我删除或添加代码,只需问:)

感谢您的阅读:)

在给出的代码片段中,我只在函数ia内部发现了union\urange,其中该名称定义良好。

void ia() 
{
analyse_action();
std::set<CardSet> union_range, resultat, range_joueur;

这里union\urange是类型为std::set<CardSet>.的局部变量所以你展示了不相关的代码。