ciao.
parto da un esempio:
codice:
#pragma once
#include <vector>
#include <string>
#include "wm4matrix4.h"
#include "BaseObject.h"

class CNodeBase : public CBaseObject
{
public:
	CNodeBase(void);
	virtual ~CNodeBase(void);
	virtual void Remove(const CNodeBase& pNode){};
	virtual void Insert(CNodeBase* pNode){};
	virtual CNodeBase* GetAt(int pos){return NULL;};


	virtual void SetParent(CNodeBase* pNode){};


	virtual Wm4::Matrix4f* GetmatrixT(){return NULL;};
	virtual void SetMatrixT(Wm4::Matrix4f* pMatrix){};
	virtual void SetMatrixT(double pMatrix[16]){};
	std::string m_strName;
};
namespace Wm4
{
	typedef Pointer<CNodeBase> CNodeBasePtr;
}
vorrei inserire come parametro di SetParent (CNodeBase* pNode){}; uno smartpointer di tipo CNodeBasePtr , solo che a quel punto la visibilità non c'è per lo smart pointer che è dichiarato piiu' in basso e se lo metto prima non ha senso perchè non è stata dichiarata la classe!


come posso fare?


grazie.