私は、次のいるクラス:定義する明示的な過負荷のコンストラクタ問題
class CLASS1
{
CLASS1();
CLASS1(const CLASS1 &obj);
CLASS1 operator +(const CLASS1 &obj) {
CLASS1 srcObj;
// doing add stuff here
return srcObj;
}
void func()
{
CLASS1 boj = // some method which returns CLASS1 obj.
}
CLASS1& operator =(const CLASS1 &obj) {
// copy properties
}
}
okが、これは正常に動作します。しかししばらくして暗黙的な変換を避けるためにクラスを明示的にすることに決めました。私は明示的に割り当てをオーバーロードしてきたのにもかかわらず、
class CLASS1
{
explicit CLASS1();
explicit CLASS1(const CLASS1 &obj);
CLASS1 operator +(const CLASS1 &obj) {
CLASS1 srcObj;
// doing add stuff here
return srcObj; // compiler gives non-matching errors
}
void func() {
CLASS1 boj = somemethods(); // compiler gives non-matching errors
}
CLASS1& operator =(const CLASS1 &obj) {
// copy properties
}
}
今、コンパイラは与えない「と呼ぶために一致する機能を...」エラー(上記のコードで指定):したがって、私はそれをこのように作りましたオペレーター。私のミスはどこですか?