Jeśli zamierzasz użyć mySecObject tylko i wyłącznie w metodach klasy myObject1 - możesz użyć prywatnego pola statycznego.
Coś w tym stylu:
// Plik myobject1.h
class myObject1
{
static Object2 mySecObject; //zostaw jako prywatne; będziemy tego używali tylko w metodach
};
// Plik myobject1.cpp
Object2 myObject1::mySecObject;
Jest to moim zdaniem bardziej poprawne niż deklarowanie zwykłej zmiennej globalnej - nasze mySecObject, mimo że statyczne, to bardziej enkapsulowane - mają do tego dostęp tylko metody myObject1, a więc ciężej coś zepsuć.
Mimo to, unikałbym zmiennych statycznych - nie są thread safe, a poza tym często można się bez nich obejść. Czy dałoby radę po prostu podać referencję do konstruktora myObject1, i to z niej korzystać w metodach? O tak:
// Plik myObject1.h
class myObject1
{
public:
myObject1(int a, Object2& secObject);
private:
Object2& SecObjectRef;
};
// Plik myObject1.cpp
myObject1::myObject1(int a, Object2& secObject):
SecObjectRef(secObject)
{
SecObjectRef.methodOne(a); //korzystamy z referencji
}