LINUX.ORG.RU

с++ , неясности


0

0

Имеем
struct A{
enum Type{
E1,E2}
static void f();
};

и

template<typename T>
void func(){
код...
}

если вызвать func(A::E1) , то как в func() добраться до A::f() ,
если это возможно ?

★★★

Ответ на: комментарий от kitov

template<typename T>
void func(typename T::Type)

компилирует , но косяки в других местах повсплывали ,
будем разбираться

kitov ★★★
() автор топика

>если вызвать func(A::E1) , то как в func() добраться до A::f() , если это возможно ?

Loki::Int2Type? Удачи.

Absurd ★★★
()

Может я вопрос неправильно понял,но что мешает вызывать статическую функцию следующим образом template<typename T> void func(){ A::f(); }

anonymous
()
Ответ на: комментарий от anonymous

>Может я вопрос неправильно понял,но что мешает вызывать статическую >функцию следующим образом template<typename T> void func(){ A::f(); }

ты не правильно понял вопрос :-)

kitov ★★★
() автор топика
Ответ на: комментарий от kitov

Чё хотел-то? #include <iostream>

struct A{ enum Type{E1,E2}; static void f(); };

void A::f() { std::cout << "We are in A::f()" << std::endl; }

template<typename T> void func(T arg) { A::f(); }

int main() { func(A::E1); return 0; }

Это работает. Причём здесь статический f(), я не понимаю.

anonymous
()
Ответ на: комментарий от anonymous

> A::f(); Это работает. Причём здесь статический f(), я не понимаю.

видимо, он хотел вывести тип A из типа T.

dilmah ★★★★★
()
Ответ на: комментарий от anonymous

А теперь представь .
struct B{
enum Type{BE1,BE2};
static void f(){std::cout<<"we are in B::F\n";}
}

func(B::BE1) что выведет ?

kitov ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.