2 개의 전용 멤버 a1, a2 및 b1, b2가있는 템플릿 클래스 A와 B가 2 개 있습니다.메서드 및 템플릿에 대한 포인터, C++
template <typename T>
class A
{
private:
T a1, a2;
public:
T getA1() const {return a1;}
T getA2() const {return a2;}
};
template <typename T>
class B
{
private:
T b1, b2;
public:
T getB1() const {return b1;}
T getB2() const {return b2;}
};
테스트 클래스에는 getter를 가리키는 2 개의 포인터가 필요합니다.
class Test
{
private:
template <typename T>
static T (*getFirst)();
template <typename T>
static T (*getSecond)();
}
template <typename T>
T (* Test::getFirst)() = &A<T>::getA1; //Pointer to getA1, error
template <typename T>
T (* Test::getSecond)() = &B<T>::getB2; //Pointer to getB2, error
int main
{
A <double> a;
B <double> b;
double c = a.getFirst + b.getSecond;
}
T가 가능 전문성없이이 코드 (즉, 클래스 템플릿 멤버에 대한 포인터) 또는 그 "포인터"를 구현되어 ... 기본 데이터 타입을 나타냅니다 전문화해야 하는가? 어떤 사례를 가져 주셔서 감사합니다 ...
답변을 작성하려했지만 한 가지 이유로 실패했습니다. 클래스 테스트로하려는 의도가 없습니다. 오류가있는 정의를 제공하지만 어디에도 사용하지 마십시오. 이러한 오류를 수정하는 방법은 주로 어떻게 사용할 것인지에 달려 있습니다. 아래의 답변 중 일부는 유용 할 수 있지만 올바른 대답을 얻으려면 Test의 사용 예를 제공해야합니다. –