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

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

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

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

プログラム

ディレクトリ構成

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

Calc.h


#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

Calc.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;
}

main.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;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

set(sources
    main.cpp
    Calc.h
    Calc.cpp
    )
    
add_executable(Main ${sources})


実行結果

ことわざクイズ

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

説明

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

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

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

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

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