サンプルコード
#include <iostream>
#include <vector>
using namespace std;
// クラス内での使用
class MyClass {
public:
typedef int MyPublicValueType; // protected, private も可能
MyClass();
public:
MyPublicValueType Get() const;
private:
MyPublicValueType m_val;
};
MyClass::MyClass() {
m_val = 256;
}
MyClass::MyPublicValueType MyClass::Get() const {
// ↑どの名前空間の MyPublicValueType であるか不明であるため
// "MyClass::Show" より左側における "MyClass::" は省略できません。
return m_val;
}
// シンプルな例 (動的に型を一括置換する用途)
typedef int MyValueType;
// typedef double MyValueType;
int main() {
MyValueType val = 1.1;
cout << val << endl; //=> 1
// 長い型を短く記述する用途
typedef vector< vector<int> > VVI;
VVI vvi;
cout << vvi.size() << endl; //=> 0
// Int型の16要素の配列
typedef int IntArr[16];
IntArr ia16;
cout << sizeof ia16 / sizeof ia16[0] << endl; //=> 16
// public な typedef はクラス外からも利用可能です
MyClass::MyPublicValueType mpval = 2;
cout << mpval << endl; //=> 2
// クラス内での使用
MyClass obj;
cout << obj.Get() << endl; //=> 256
// ポインタ (参考: https://www.qoosky.io/techs/4f982b1757 )
typedef int* IntPtr;
typedef const int* ConstIntPtr;
int intval = 8;
const IntPtr intptr = &intval; // ポインタ自身が不変
IntPtr const intptr_ = &intval; // 同じ意味です
ConstIntPtr cintptr = &intval; // ポインタが指す先が不変
// *cintptr = -1; // とするとエラー
return 0;
}