2014-10-15 3 views
-2

У меня проблема с созданием ссылки функции struct.C++ struct link function

Ошибка 1 ошибка C2143: синтаксическая ошибка: отсутствует ';' перед '*' (Config.h) Ошибка 2 ошибки C4430: отсутствует спецификатор типа - int. (Config.h)

Library.h

#include "Config.h" 
#include "Struct.h" 

Struct.h

struct COMMANDSTRUCT 
{ 
    char Name[50]; 
    int Enable; 
    int Price; 
}; 

Config.cpp

#include "Library.h" 

    COMMANDSTRUCT* Config::getIndex(std::string Text) 
    { 
     for (int i = 0; i < m_COMMANDSTRUCT.size(); i++) 
     { 
      if (strcmp(m_COMMANDSTRUCT[i].Name, Text.c_str()) == 0) 
      { 
       return &m_COMMANDSTRUCT[i]; 
      } 
     } 

     return NULL; 
    } 

config.h

class Config 
{ 
public: 

    static COMMANDSTRUCT* getIndex(std::string Text); 
    static std::vector<COMMANDSTRUCT> m_COMMANDSTRUCT; 

}; 

использование

COMMANDSTRUCT * lpCommand = Config::getIndex("post"); 
+3

эти сообщения об ошибках являются неполными - компилятор обычно говорит вам, какие именно строки и какая часть кода дает ему вопросы – UnholySheep

+5

В какой файл 'COMMANDSTRUCT' определен? Вы включили это? –

+0

в Func.cpp включен Struct.h файл с, struct, yes it is includeset – feesar

ответ

1

Я думаю, что это может быть порядок в директив #includes "Library.h"

Library.h -> включает в config.h (Config класса) THEN Struct.h (COMMANDSTRUCT) config.h - > зависит от COMMANDSTRUCT

Так config.h должны быть #included ПОСЛЕ Struct.h

+0

yep, что было проблемой теперь только 2 ошибки ... http://prntscr.com/4wdyjk – feesar

0

Вы должны включить struct декларации, так что другие файлы знают, что тип.

#include "struct.h" // or whatever you named the file 

Это должно быть сделано в Func.h, которые затем должны быть включены в Func.cpp поэтому оба файла имеют доступ к этой декларации.

+0

это уже http://prntscr.com/4wdsdh – feesar