2013-03-22 6 views
0

복잡한 숫자의 클래스를 가지고 있는데, 두 가지 모두에서 +, -, *, /,=,!= 연산자를 complex 형과 double 형으로로드했는데, 코드 complex z = 1을 쓸 때, 컴파일러는 나에게 int에서 complex으로의 가변적 인 변환. 비록 코드를 받아 들일지라도커스텀 클래스로의 타입 변환 - C++

complex z; 
z = 1; 

그리고 모두 정상적으로 작동합니다. 이 오류를 수정하려면 어떻게해야합니까?

답변

0

적절한 생성자를 작성해야합니다. 하지만,

class complex 
{ 
public: 
    complex(double d) : _real(d), _imag(0) { } 
    ... 
}; 

주의 :

class complex { 
public: 
    complex(double x) { 
     // ... 
    } 

    // ... 
}; 
1

당신은 생성자를 추가 할 수는 이는 double가 허용이 생성자가 수행하기 때문에하는 complex이 예상되는 곳 int을 통과 가능성을 만들 것입니다 암시 적 변환.

0

double이 필요한 생성자가 필요합니다.

class complex 
{ 
public: 
    complex(double d); 
}; 
2

라인 complex z = 1Copy Initialization 않습니다. 이것은 할당 연산자가 필요합니다 (이전에 건설 기본 객체) 할당입니다

complex z; 
z = 1; 

과 다른

complex::complex(int i) // or double or whatever is convertible to int by 
{      // implicit conversion 
    // your code 
} 

: 당신은 적절한 생성자가 필요합니다.

관련 문제