第3回 C++教室

STLによるダイナミックなメモリ領域の使用

クラスとは,オブジェクトを作成するための仕組みのことです. C言語でいうところの構造体に,関数が組み合わさったものです. クラスの変数を宣言するとそれに対して関数を呼び出したり, 内包する変数の値を変更・参照することができます.

サンプル1

Block.h

#pragma once

class Block
{
public:
  int x1, y1, x2, y2;
  int v;

  Block(int x1_, int y1_, int x2_, int y2_, int v_ = 0) : x1(x1_), y1(y1_), x2(x2_), y2(y2_), v(v_) {}
  int getArea();
};

Block.cpp

#include "Block.h"

int Block::getArea()
{
  int a = (x2 >= x1) ? (x2 - x1) : (x1 - x2);
  int b = (y2 >= y1) ? (y2 - y1) : (y1 - y2);

  return (a*b);
}

test1.cpp

#include <iostream>
#include<vector>

#include "Block.h"

using namespace std;

void main()
{
  vector<Block>  vect;
  Block b1(10, 20, 20, 30, 100), b2(15, 20, 10, 25);

  vect.push_back(b1);
  vect.push_back(b2);

  int i;
  for (i = 0; i < vect.size(); i++) {
	cout << "[" << i << "]" << endl;
	cout << "頂点:" << " ( " << vect.at(i).x1 << " , " << vect.at(i).y1 << " ) - ( "
                               << vect.at(i).x2 << " , " << vect.at(i).y2 << " )" << endl;

	cout << "値:" << vect.at(i).v << endl;

	cout << "面積:" << vect.at(i).getArea() << endl;
  }

}