 
 
 
 
 
 
Jos on valmiina C++ funktioita, joiden kutsut on periaatteessa mahdollista muuttaa C- funktioiksi, pitää rakentaa väliin C++:lla funktio joka on tyyppiä "C". Muuttaminen on mahdollista, mikäli funktion parametrilistassa olevat tyypit ovat myös C- tyyppejä tai sellaisiksi muunnettavissa. Usein myös C++ luokat voidaan muuttaa C- tietueiksi, koska itse luokan alkiot ovat samanlaisia kuin C- tietueen alkiot.
	/* PISTE.C */
	#include "piste2ali.h"
	
	int main(void)
	{
	  tPiste p={4,5};
	  tulosta(&p);
	  return 0;
	}
	/* PISTE2ALI.H */
	typedef struct {
	  int x,y;
	} tPiste;
	
	#ifdef __cplusplus
	extern "C"
	#endif
	  void tulosta(const tPiste *p);
	 /* PISTE2ALI.CPP */
	#include <stdio.h>
	#include "piste2ali.h"
	
	class cPiste {
	  int x,y;
	public:
	  void tulosta() const;
	};
	
	void cPiste::tulosta() const
	{
	  printf("(%d,%d)\n",x,y);
	}
	
	extern "C" void tulosta(const tPiste *p)
	{
	  ((cPiste *)p)->tulosta();
	}Huomautus! Esimerkki toimii vain jos C++ tietueessa (luokassa) ei ole yhtään virtuaalista funktiota! Jos luokassa on virtuaalisia funktioita, pitää tehdä osoittimen tyypinmuunnoksen (cPiste *) sijasta rehellinen sijoitus C++ tyyppiseen apumuuttujaan (ks. Olio- osoittimet):
	extern "C" void tulosta(const tPiste *p)
	{
	  cPiste ap(p); // Luokkassa cPiste esitelty konstruktori cPiste(tPiste *)
	  ap.tulosta();
	}
 
 
 
 
 
