そこの。以下のようなコードがあります。
struct SomeClass
{
SomeClass();
};
SomeClass::SomeClass()
{}
template <class K, class T>
struct BaseStruct
{
typedef K kType;
typedef T tType;
kType _key;
tType _element;
BaseStruct();
BaseStruct(kType& key, tType& element);
BaseStruct(BaseStruct&);
};
template <class K,class T>
BaseStruct<K,T>::BaseStruct()
{}
template <class K,class T>
BaseStruct<K,T>::BaseStruct(kType& key, tType& element)
{
_key=key;
_element=element;
}
template <class K,class T>
BaseStruct<K,T>::BaseStruct(BaseStruct& BaseStructInstance)
{
_key=BaseStructInstance._key;
_element=BaseStructInstance._element;
}
struct DerivedStruct:public BaseStruct<int, SomeClass>
{
};
int main(int argc, char *argv[])
{
DerivedStruct derivedStructInstance;
derivedStructInstance=DerivedStruct(0,SomeClass());
}
コンパイルすると、次のエラーが発生します。
In function `int main(int, char**)':
54 no matching function for call to `DerivedStruct::DerivedStruct(int, SomeClass)'
52 candidates are: DerivedStruct::DerivedStruct()
52 DerivedStruct::DerivedStruct(DerivedStruct&)
Makefile.win [Build Error] [main.o] Error 1
基本的に、sctuct にはコピー コンストラクターがないと言っていますが、メンバー値を渡して構造体を初期化しています。さらに、コピーコンストラクターがあります。
どうすれば問題を解決できますか?