- 500 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 00:17:10 ]
- 俺としては以下のやり方でMyClassクラスによるstd::swap関数テンプレートの特殊化を行い、
using std::swap; swap(x,y); で特殊化したstd::swap<MyClass>が呼び出せるかと思ったのだが、 以下のやり方だとなにか定義がかぶっているようなことを言われてエラーになってしまう。 再現するソースは次のようなもの。 //以下はMyClass.h class MyClass { char *p; public: void swap(MyClass &hoge); MyClass(); ~MyClass(); }; //以下はMyClass.cpp #include <algorithm> #include "MyClass.h" MyClass::MyClass():p("pointer"){} MyClass::~MyClass(){} void MyClass::swap(MyClass &hoge) {std::swap(this->p, hoge.p);} namespace std { template<> void swap(MyClass &lhs,MyClass &rhs) {lhs.swap(rhs);} }
|

|