今日の実験

test.h

#ifndef _TEST_
#define _TEST_

class CA{
	private:
	int m_integer;
	public:
	CA(int a);
	void print_a();
};

class CB{
	private:
	CA *m_pa;
	public:
	CB();
	CB(CA *a);
	void print_b();
};

#endif

test.cpp

#include "test.h"
#include <stdio.h>

CA::CA(int a){
	m_integer = a;
}
void CA::print_a(){
	printf("%d\n", m_integer);
}
CB::CB(){
	m_pa = new CA(1);
}
CB::CB(CA *a){
	m_pa = a;
}
void CB::print_b(){
	m_pa->print_a();
}
CB* test(CA *ca){
	CB *cb = new CB(ca);
	printf("%p\n", cb);
	return cb;
}

int main(){
	CA *ca = new CA(3);
	CB *cb = test(ca);
	printf("%p\n", cb);
	cb->print_b();

	return 0;
}

一応メモリの確保自体はやってるんだからポインタ返しても良さそうなもの。
というか実体を返すと受け渡しに時間掛かりそうだし。考えてたことが正しいなら、
こうせざるを得ない。