ハムスターに飼われる院生のブログ

自分用メモが中心のブログです。

複数のクラスで同じインスタンスを使用する

複数のクラスで共通のインスタンスを使用する方法
特にメルセンヌツイスターを使用している時によく使うので、メルセンヌツイスターを例に以下にコードを残す。
メイン関数とクラス(Class1)で共通のインスタンスを使用する例。

main.cpp

#include <iostream>
#include "MersenneTwister.h"
#include "Class1.h"
using namespace std;

int main() {
	CMersenneTwister mt;
	mt.init_genrand(10);

	Class1 c;
	c.SetMT(&mt);

	c.RandTest();
	return 0;
}

Class1.h

#pragma once
#include "MersenneTwister.h"
class Class1
{
private:
	CMersenneTwister *mt;
public:
	void SetMT(CMersenneTwister* _mt) {
		mt = _mt;
	};
	void RandTest() {
		double rand = mt->genrand_real1();
		cout << "rand = " << rand << endl;
	}
};

今回の環境下では
rand = 0.771321
と表示された。