2014-04-12 1 views
0

사용자가 function()을 수행 할 클래스를 선택할 수있게하려고합니다. 오브젝트 A와 B가있는 클래스가 두 개 있다고 가정하십시오. 함수는 obj.get 및 obj.set와 같은 함수를 사용합니다. A와 B 중 하나를 선택하여 obj에 복사하고 싶습니다.한 클래스의 객체를 다른 클래스의 객체로 복사 .... noob

할 방법이 있습니까? 문제 : A = Obj .... 작동하지 않습니다. Switch case 또는 루프를 사용하고 Obj를 선택한 클래스의 개체로 선언하면 범위와 관련된 문제가 발생합니다.

도와주세요 !! 두 클래스 모두 똑같은 변수와 메소드를 가지고 있습니다. 두 객체 A와 B가 같은 클래스의 경우

답변

0

단지 이런 식으로 작업을 수행합니다

(A와 B는 경우 가 같은 클래스에 속해야 정확히 같은 필드와 메소드가 실제로 있다면 그것은 실제 프로그램)

MyClass A,B; 
//... 
A = copy(B); 
/* 
* 
* 
* 
* 
*/ 
MyClass copy(MyClass arg) { 
    MyClass result = new MyClass(); 
    result.field1 = arg.field1; 
    result.field2 = arg.field2; 
    //........ 
    return result 
} 

또는 MyClass에서 clone 메소드를 오버라이드 (override)합니다. 참고 : 대부분의 사람들은 Java의 복제본이 손상되었다고 동의합니다. Effective Java 2 판, 항목 11 : 항목을주의 깊게 무시하십시오. 그는 대신 복사 생성자 또는 복사 팩토리를 사용하도록 권장합니다.

0

자바와 C++ 중 어떤 태그를 사용하고 있습니까?

귀하의 문장은 이해하기 어렵다, 그러나 나는 올바른 해요, 당신은 같은 것을 가지고

ClassA A = new ClassA() 
ClassB B = new ClassB() 

을 그리고 당신은 OBJ B로 OBJ A로부터 뭔가를 복사하려면? 이 옵션을 사용합니다 :

B.set(A.get()); 
+0

사용자의 선택에 따라 하나의 개체 만 만들고 싶습니다. 콘텐츠를 복사합니다. 다른 클래스의 객체를 퍼스트 클래스의 변수로 지정하고 싶습니다 가능합니까? – user3526575

0

당신은 C를 사용하는 경우 ++ 다음 U 난 당신이 사용자의 입력에 따라 클래스를 식별하는 데 문제가 생각이 작업을 수행하여

#include <typeinfo>. 
.. 
.. 
.. 
. 
cout << typeid(objA).name() << endl; 

을하는 클래스의 이름을 식별 할 수 있습니다 .. 이 경우 typeid가 작동합니다. 사용자가 선택한 클래스를 확인하고 입력 작업을 기반으로하십시오.

관련 문제