2016-11-05 3 views
0

아래 작업을 구현하는 데 도움이 필요합니다. 그래서 네임 스페이스에 동일한 명명 된 클래스가 있어야합니다. RHS는 일부 라이브러리 클래스에서 상속됩니다. 함수, 각 네임 스페이스에 다른 구현이있는 RHS 클래스 내의 동일한 명명 된 함수 RHSvalue. 또한 Function 클래스에는 구현시 RHSvalue라는 함수가 없습니다.C++의 네임 스페이스에서 함수 오버로드

namespace S50{     // Mother namesapce in which i want to implement all tasks 
class Coeff: public Function { // Function class from some library 
public: 
virtual double value(); 
virtual void value_list(); 
}; 
} 

namespace Charge{ 
class RHS: public Funtion { 
virtual double RHSvalue(); // Function class does not have any function named RHSvalue() 
}; 
} 

namespace S16{ 
class RHS: public Function { 
virtual double RHSvalue(); // same named function in other namespace with other implementation 
}; 
} 

답변

0

당신이 원하는 것을 가진 것처럼 보입니다 ... 나는 당신이 말한 것을 의미합니다.

일부 의견 :

1) RHSvalue 필요하지 않습니다는 기능 클래스에 정의 될,하지만 그 다음이 아니라면 당신은, 예를 함수에 대한 포인터를 사용하여 funciton RHSvalue를 호출 할 수 없습니다.

Function* function = new Charge::RHS(); 
function->RHSvalue(); // ERROR 

2) Coeff 클래스 란 무엇입니까?

namespace Charge{ 
    class RHS: public Funtion { 
    virtual double RHSvalue() { std::cout << "From Charge"<< std::endl; } 
    }; 
} 
+0

그게 전부를 정확하게 내가 원하는 : 당신이 다른 구현은 그럼 그냥 이런 식으로 뭔가를 넣어 필요하면 당신은 설명

3)에서 언급하지 않았습니다. 네임 스페이스 객체의 RHS 클래스 중 하나를 동적으로 가리키는 포인터를 만들고 싶습니다. 예 : –

+0

std_cxx11 :: shared_ptr RhsFunc = std_cxx11 :: make_shared (Step16 :: RHS()); –

관련 문제