Всем привет!
Подскажите можно ли делать в C++ предварительное определение переменных и объектов классов? Вот например такие классы:
class B;
class A
{
public:
A(B* rb){}
};
class B
{
public:
B(A* ra){}
};
Можно создать глобальные объекты этих классов:
extern B b;
A a(&b);
B b(&a);
void main(void)
{
}
но не получается создать локальные:
void main(void)
{
extern B b;
A a(&b);
B b(&a);
}
Для того, чтобы сделать объявление функции можно написать либо
extern void f(void);
либо просто
void f(void);
потому, что объявление функции и так можно отличить от определения, в отличие от переменных. А для объявления переменной extern обязателен — такое у меня было предположение. Но поэкспериментировав я выяснил, что поторопился с предположением.
Вобщем запутался я немного. Можно ли делать объявления переменных и объектов классов или нет?
Вроде получается, что для глобальных можно:
extern int i;
int * pi = &i;
int i = (int)pi;
void main(void)
{
}
а для локальных нет:
void main(void)
{
extern int i;
int * pi = &i;
int i = (int)pi; // Ошибка: переопределение i
}
Похоже что ответ на мой вопрос отрицательный, но тогда почему? Как мне создать локальные объекты классов A и B?
P.S.: MSDN читал на данную тему, но все равно не все понял ((