2016-11-03 5 views
0

Просто интересно, есть ли у кого-нибудь идея о том, как решить эту проблему.Отладка не связанных файлов заголовков в C++

Большое спасибо!

С помощью этого кода в 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; 
} 

И этот код в DataStructures.hpp:

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


#endif 

И этот код в 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 получите сообщение об ошибке: Нет соответствующей функции для вызова «Setup» в main.cpp. Любые идеи

+0

структура Кусок Все [32]; вы не ставите struct/class/union при создании объекта ваших собственных пользовательских типов. Piece All [32]; is fine –

+0

На какой строке кода? –

+0

Вы определили две структуры 'Piece'. Вы должны перенести его определение на одно место, DataStructures.hpp будет лучшим в вашем случае. Другое дело, что вам не нужно использовать ключевое слово struct, как упоминалось ранее. – woockashek

ответ

1

Основной скелет кода:

// 
// 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. Ввод всего в один файл - плохая практика. 2. Создание класса, содержащего не более статичного метода. Вместо этого вы можете использовать пространство имен. (или/и иметь отдельные элементы в разных файлах) – woockashek

+0

Я хочу показать базовый скелет кода, вот почему я помещаю все в один файл –

+0

Теперь лучше, но мне немного неудобно с помощью метода в Data ** Structures ** namespace;) – woockashek

 Смежные вопросы

  • Нет связанных вопросов^_^