手元に32ビット版FreeBSD(time_t==int)の環境が無いのでCygwin(time_t==longなのでちょっと違う)でしか確認していませんが、テストコード以外で「const
enum type new_type」を省略している所は無さそうですので、Variantクラスのコンストラクターの修正だけでビルドできると思います。
ビルドが成功したら「make test」を実行してみて、全テストケースをパスしたら動くかもしれません。


 src/Variant.h           |  2 +-
 test/variant_cast.t.cpp | 12 ++++++------
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/Variant.h b/src/Variant.h
index 6780ace..b49f313 100644
--- a/src/Variant.h
+++ b/src/Variant.h
@@ -49,7 +49,7 @@ public:
   Variant (const double);
   Variant (const std::string&);
   Variant (const char*);
-  Variant (const time_t, const enum type new_type = type_date);
+  Variant (const time_t, const enum type new_type);
   ~Variant ();

   void source (const std::string&);
diff --git a/test/variant_cast.t.cpp b/test/variant_cast.t.cpp
index 63430b0..9799c9d 100644
--- a/test/variant_cast.t.cpp
+++ b/test/variant_cast.t.cpp
@@ -176,24 +176,24 @@ int main (int argc, char** argv)
     t.is (v35b.get_duration (), 3628800,          "cast string --> duration");

     // Variant::type_date --> *
-    Variant v40 ((time_t) 1234567890);
+    Variant v40 ((time_t) 1234567890, Variant::type_date);
     v40.cast (Variant::type_boolean);
     t.ok (v40.type () == Variant::type_boolean, "cast date --> boolean");
     t.ok (v40.get_bool () == true,              "cast date --> boolean");

-    Variant v41 ((time_t) 1234567890);
+    Variant v41 ((time_t) 1234567890, Variant::type_date);
     v41.cast (Variant::type_integer);
     t.ok (v41.type () == Variant::type_integer, "cast date --> integer");
     t.ok (v41.get_integer () == 1234567890,     "cast date --> integer");

-    Variant v42 ((time_t) 1234567890);
+    Variant v42 ((time_t) 1234567890, Variant::type_date);
     v42.cast (Variant::type_real);
     t.ok (v42.type () == Variant::type_real,      "cast date --> real");
     t.is (v42.get_real (), 1234567890.0, EPSILON, "cast date --> real");

     // YYYY-MM-DDThh:mm:ss
     //     ^  ^  ^  ^  ^
-    Variant v43 ((time_t) 1234567890);
+    Variant v43 ((time_t) 1234567890, Variant::type_date);
     v43.cast (Variant::type_string);
     t.ok (v43.type () == Variant::type_string, "cast date --> string");
     std::string s = v43.get_string ();
@@ -204,12 +204,12 @@ int main (int argc, char** argv)
     t.is ((int)s[16], (int)':',                "cast date --> string");
     t.is ((int)s.length (), 19,                "cast date --> string");

-    Variant v44 ((time_t) 1234567890);
+    Variant v44 ((time_t) 1234567890, Variant::type_date);
     v44.cast (Variant::type_date);
     t.ok (v44.type () == Variant::type_date,    "cast date --> date");
     t.ok (v44.get_date () == 1234567890,        "cast date --> date");

-    Variant v45 ((time_t) 1234567890);
+    Variant v45 ((time_t) 1234567890, Variant::type_date);
     v45.cast (Variant::type_duration);
     t.ok (v45.type () == Variant::type_duration, "cast date --> duration");
     t.ok (v45.get_duration () == 1234567890,     "cast date --> duration");


2015年4月8日 17:32 User Ribbon <rib...@ns.ribbon.or.jp>:
> FreeBSD32ビット環境だと、上記のようにVariantの定義が重複して
> うまくない、ということなのですね。
>
> ただ、この先どうするかはC++が分かっていないので、ちょっと手の出しようがないです。
> ですので、とりあえずはあきらめることにします。


-- 
pegacorn
_______________________________________________
freebsd-users-jp@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp
To unsubscribe, send any mail to "freebsd-users-jp-unsubscr...@freebsd.org"

メールによる返信