開発環境

Visual studio 2015 Swig Github TortoiseGit Cygwin

Mix-InによるCloneableの実装

c++

したいこと clone関数を継承によって実装したい。 下記のような感じにしたい。 A, Bはクラスはclone関数をオーバーライドしていないけど、Cloneableを継承することで、cloneができるようになる。 struct B : public Cloneable とすることで、BはAを継承した…

std::vector<T>をC#から使えるようにする。

swigを使用。 SwigSample.i %include std_vector.i %template(VectorDouble) std::vector<double>; のようにすればよい。C#でVectorDoubleという名前でstd::vectorが使用できるようになる。あとはいつも通り swig -csharp -c++ SwigSample.i</double>

C#で作ったdllをExcel/VBAから呼び出す方法。

c#

参考 Excel から使うマネージDLL を作る。 | supermab's blog 課題 関数にsummaryを書き、xmlを生成したが、Excel/VBAでは表示されない。 下記のコードの意味がよく分からない。 [ComRegisterFunctionAttribute] private static void RegisterFunction(Type …

パースしたJSONを違うobjectに変換する。

c++

したいこと {"person" : {"name" : "testname", "age" : 29}} のようなデータから class Person { std::string _name; int _age; }; class Data { Person _person; }; のDataクラスに変換する。 ソースコード https://github.com/nishiba/object_creator int…

JSON構文

c++

JSONの原典 JSON JSONの構文 データは "name" : value データはカンマ区切り 波括弧{}はオブジェクト 角括弧[]は配列を表す JSONのvalueの型 数値 文字列 ブール 配列 オブジェクト null JSON構文チェック 下記サイトで構文を確認できる。 https://syncer.jp…

enum classをfor文で回す。

c++

#define GENERATE_ENUM_ITERATOR(T) \ inline T operator++(T& x) { return x = (T)(std::underlying_type<T>::type(x) + 1); } \ inline T operator*(T c) { return c; } \ inline T begin(T r) { return static_cast<T>(0); } \ inline T end(T r) { T l = T::LA</t></t>…

boost::spirit::qiを使って電卓っぽいものを作る。

c++

コードをgithubにアップ。 nishiba/boost_spirit_sample 実行し、”1 + max(2, 3) * 4"と入力すると、"13"と返ってくる。 ------------------------------------------------ # 1 + max(2, 3) * 4OK13 ------------------------------------------------