2013-08-14 3 views
3

Насколько я могу судить, в моем коде нет реальной проблемы, но, тем не менее, Visual Studio не распознает определенный класс в моем * .h файле. Он признает только перед-структуру и класс только после - и если я поставлю на дополнительнойVisual Studio 2012 Professional не распознает класс - иногда

class test { 
    int foo; 
public: 
    void bar(); 
} 

как раз перед, он находит его

Для уточнения: (но теперь он не находит test.) узнав, я говорю о двух вещах: панели видимости в верхней части окна кода и списке расширения FooBar.h. Первый настаивает на том, что пространство внутри класса по-прежнему является «глобальным охватом», а второе перечисляет все мои функции, как если бы они были глобальными.

Это повторяется через репарации - как отмечено выше, я могу исправить проблему, добавив класс test и заново создав его, удалив класс фиктивного типа.

IntelliSense еще признает класс и его методы, как принадлежащие к классу, который решительно нечетным ...

Фактический код следующим образом.

//This shows up fine: expanding FooBar.h reveals a sub-list called Update, with 
//fields "pE, pEgivenH, E" and methods "Update(...), ~Update(), operator=," and so on. 
struct Update { 
public: 
    double pEgivenH, pE; 
    EvidenceID E; 

    Update(double, double, EvidenceID); 
    ~Update(); 
    Update &operator=(const Update &rhs); 
    int operator==(const Update &rhs) const; 
    int operator<(const Update &rhs) const; 
} 

// Point A 

// This doesn't, though. When the cursor is placed within this class, the bar insists 
// that it is "global scope", and all methods here show up as global methods under 
// FooBar.h. The problem goes away if I add a class at Point A. 
class Hypothesis { 
    string hypothesis; 
    double currentP; 
    double prior; 
public: 
    list<Update> history; 

    ~Hypothesis(); 
    Hypothesis &operator=(const Hypothesis &rhs); 
    int operator==(const Hypothesis &rhs) const; 
    int operator<(const Hypothesis &rhs) const; 

    Hypothesis(string, double); 
    double updateHypothesis(Update); 
    double recalcHypothesis(); 
    string getHypothesis(); 
    double getProbability(); 
} 

// This class also shows up fine. 
class Action { 
    ActionType type; 
    Update ubefore, uafter; 
    Hypothesis hbefore, hafter; 
    EvidenceID ebefore; 
public: 
    void undo(); 
    void redo();  
} 
+6

Ваши классы (и структуры) нуждаются в запятой после запятой. –

ответ

8

Похоже, что вы просто пропустили точки с запятой после каждой структуры/класса.

+1

... * лицоpalm * Да, это сделал. – linkhyrule5

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