プログラム関係の備忘録。技術系記事1000記事以上を目指すブログ

【C++】CMakeでC++のプログラム入門〜インスタンス生成のタイミング〜

  • 2018年6月9日
  • C++
  • 151view
  • 0件
C++

前回
【C++】CMakeでC++のプログラム入門〜コンストラクタとデストラクタ〜
今回はインスタンス生成のタイミングをコントロールする為の書き方。

プログラム

ディレクトリ構成

┣ main.cpp
┣ Calc.h
┣ Calc.cpp
┣ CMakeLists.txt
┗ build

Calc.h

[cpp]

#ifndef _CALC_H_
#define _CALC_H_

#include <iostream>

using namespace std;

class Calc
{
public:
Calc();
~Calc();
void judg(string num);
string get();
private:
string m_num;
};

#endif
[/cpp]

Calc.cpp

[cpp] #include "Calc.h"
#include <iostream>

using namespace std;

Calc::Calc()
{
cout << "判定開始" << endl;
}

Calc::~Calc()
{
cout << "判定終了" << endl;
}

void Calc::judg(string num)
{
if(num == "落ちる")
{
m_num = "正解";
}
else
{
m_num = "不正解";
}
}

string Calc::get()
{
return m_num;
}

[/cpp]

main.cpp

[cpp] #include <iostream>
#include "Calc.h"

using namespace std;

int main(){
string msg;
cout << "ことわざクイズ\n" << endl;
cout << "猿も木から?" << endl;
cin >> msg;
Calc* calc = new Calc();
calc->judg(msg);
cout << calc->get() << endl;
delete calc;
return 0;
}

[/cpp]

CMakeLists.txt

[cpp] cmake_minimum_required(VERSION 2.8)

set(sources
main.cpp
Calc.h
Calc.cpp
)

add_executable(Main ${sources})

[/cpp]

実行結果

ことわざクイズ

猿も木から?
落ちる
判定開始
正解
判定終了

説明

インスタンスの生成のタイミングをコントロールするために、newとdeleteを使っている。

前回はクラスのインスタンスを生成していた
Calc calc;

今回はコンストラクタを対象にインスタンスを生成している
Calc* calc = new Calc();

ポインタcalcでのアクセスにはアロー演算子が使われる。

デストラクタを呼び出すタイミングには以下を使う
delete calc;