Насколько я могу судить, в моем коде нет реальной проблемы, но, тем не менее, 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();
}
Ваши классы (и структуры) нуждаются в запятой после запятой. –