2016-11-03 3 views
0

Je me demandais si quelqu'un avait une idée sur la façon de résoudre ce problème.Déboguer les fichiers d'en-tête sans lien en C++

Merci beaucoup !!

Avec ce code dans main.cpp:

// 
// main.cpp 
// Chess 
// 
// Created by Akshar Ramkumar on 9/29/16. 
// Copyright © 2016 Akshar Ramkumar. All rights reserved. 
// 

#include <iostream> 
#include "DataStructures.hpp" 


int main() { 
    struct Piece { 
     int Type; 
     int x; 
     int y; 
     bool Captured; 
     bool Color; 
     char pictfile[7]; 
    }; 



    struct Piece All[32]; 
    setup(All); 
    return 0; 
} 

Et ce code dans DataStructures.hpp:

#ifndef DataStructures_hpp 
#define DataStructures_hpp 
void setup(struct Piece All[32]); 


#endif 

Et ce code dans DataStructures.cpp:

// 
// Classes.cpp 
// Chess 
// 
// Created by Akshar Ramkumar on 10/13/16. 
// Copyright © 2016 Akshar Ramkumar. All rights reserved. 
//Pawn = 0 
//Rook = 1 
//Knight = 2 
//Bishop = 3 
//King = 4 
//Queen = 5 

struct Piece { 
    int Type; 
    int x; 
    int y; 
    bool Captured; 
    bool Color; 
    char pictfile[7]; 
}; 

void setup(struct Piece All[32]){ 

    int TypeArray[32]={0,0,0,0,0,0,0,0,1,1,2,2,3,3,4,5,0,0,0,0,0,0,0,0,1,1,2,2,3,3,4,5}; 
    int xValues[32]={0,1,2,3,4,5,6,7,0,7,1,6,2,5,3,4,0,1,2,3,4,5,6,7,0,7,1,6,2,5,3,4}; 
    int yValues[32]={1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7}; 


    for (int i=0;i<32;i++){ 
     All[i].Type = TypeArray[i]; 
     All[i].y = yValues[i]; 
     All[i].x = xValues[i]; 
     All[i].Color = true; 
     All[i].Captured = false; 


     if (i>15){ 
      All[i].Color = false; 
     } 


    } 
} 

I obtenir une erreur disant: Aucune fonction correspondante pour l'appel à "Setup" dans main.cpp. Toutes les idées

+0

struct Piece Tous [32]; vous ne mettez pas la structure/classe/union en faisant l'objet de vos propres types définis par l'utilisateur. Pièce tout [32]; est bien –

+0

Sur quelle ligne du code? –

+0

Vous avez défini deux structures 'Piece'. Vous devriez déplacer sa définition à un endroit, DataStructures.hpp serait le meilleur dans votre cas. Une autre chose est que vous n'avez pas besoin d'utiliser le mot-clé struct comme mentionné précédemment. – woockashek

Répondre

1

squelette de base de votre code:

// 
// main.cpp 
// Chess 
// 
// Created by Akshar Ramkumar on 9/29/16. 
// Copyright © 2016 Akshar Ramkumar. All rights reserved. 
// 

#include <iostream> 
namespace DataStructures { 
    struct Piece { 
     int Type; 
     int x; 
     int y; 
     bool Captured; 
     bool Color; 
     char pictfile[7]; 
    }; 

    void setup(Piece* pieces) { 
      //TODO 
    } 
}; 

int main() { 

    DataStructures::Piece All[32]; 
// Initialize All[32] here 
    DataStructures::setup(All); 
    return 0; 
} 
+0

1. Mettre tout dans un fichier est une mauvaise pratique. 2. Création d'une classe ne contenant pas plus d'une méthode statique. Vous pourriez utiliser un espace de noms à la place. (ou/et continuer à avoir des éléments séparés dans différents fichiers) – woockashek

+0

Je veux montrer le squelette de base du code, c'est pourquoi je mets tout dans un fichier –

+0

Maintenant c'est mieux mais je suis un peu mal à l'aise avec une méthode dans Data ** Structures ** namespace;) – woockashek