私は他のライブラリをラップするためのクロスプラットフォーム環境に取り組んでいます。特に、私はプログラミング言語にまったく慣れていないため、C++ とそのライブラリ/拡張機能を理解するのに役立つためです。
私はプリミティブ型のラッパーを作成しているので、eventSerialize(...)、eventRepresentate(...) などの関数を与えることができます (その他の理由による)。
時間を節約するために、プリミティブのテンプレート クラス ラッパーを作成することを考えました。
次の質問があります。
- 演算子の参照は適切に行っていますか?
- それらが互いにキャストできることを確認するにはどうすればよいですか? (テンプレート演算子 Primitive();)?
- 他のすべての演算子についてはどうですか。つまり、それらを見つけることができますが、正しい構文 (const / & など) で適切に記述する方法をどこで見つけることができますか?
誰かが私にそれらの答えを教えてくれることを願っています。
#ifndef swift_Int32
#define swift_Int32
#include <boost/cstdint.hpp>
namespace swift
{
template<class T> class Primitive : public Object
{
T data;
public:
Primitive();
Primitive(T&);
Primitive(Primitive<T>&);
Primitive<T>& operator = (const Primitive<T>&);
Primitive<T> operator * (const Primitive<T>& value);
Primitive<T> operator / (const Primitive<T>& value);
Primitive<T> operator + (const Primitive<T>& value);
Primitive<T> operator - (const Primitive<T>& value);
Primitive<T>& operator *= (const Primitive<T>& value);
Primitive<T>& operator /= (const Primitive<T>& value);
Primitive<T>& operator += (const Primitive<T>& value);
Primitive<T>& operator -= (const Primitive<T>& value);
bool operator == (const Primitive<T>&) const;
bool operator != (const Primitive<T>&) const;
bool operator < (const Primitive<T>&) const;
bool operator > (const Primitive<T>&) const;
bool operator <= (const Primitive<T>&) const;
bool operator >= (const Primitive<T>&) const;
};
typedef Primitive<bool> Bool;
typedef Bool Bit;
typedef Primitive<int8_t> Char;
typedef Primitive<uint8_t> Byte;
typedef Primitive<int16_t> Int16;
typedef Primitive<uint16_t> UInt16;
typedef Primitive<int32_t> Int32;
typedef Primitive<uint32_t> UInt32;
typedef Int16 Short;
typedef UInt16 UShort;
typedef Int32 Int;
typedef UInt32 UInt;
}
#endif //swift_Int32