Здравствуйте, blacksun, Вы писали:
B>такое ощущение, что компилятор не знает, что у cls1 есть переменная test1.
B>подскажите, как побороть проблему?
А ты поработай препроцессором

Смотри:
// main.cpp
//#include "cls1.h"
#pragma once
//#include "cls2.h"
#pragma once
//#include "cls1.h" - проигнорировано, второе включение
class cls1; // а до объявления еще не добрались :)
class cls2
{
public:
cls2() { pCls1 = NULL; }
int test2;
cls1 *pCls1;
void setp(cls1 *p);
// правильно, здесь проблема
void prnt() { if (pCls1) printf("%d\n", pCls1->test1); } // <-- проблема здесь
};
// и только здесь начинается объявление cls1
...
вынеси prnt в .cpp