struct Test
{
template <class T>
void print(T& t)
{
t.print();
}
};
struct A
{
void print() {printf("A");}
};
struct B
{
void print() {printf("B");}
};
void test_it()
{
A a;
B b;
Test t;
t.print(a);
t.print(b);
}
Việc biên dịch này tốt.Khấu trừ đối số cho các hàm thành viên mẫu không hoạt động đối với các lớp được khai báo bên trong hàm?
struct Test
{
template <class T>
void print(T& t)
{
t.print();
}
};
void test_it()
{
struct A
{
void print() {printf("A");}
};
struct B
{
void print() {printf("B");}
};
A a;
B b;
Test t;
t.print(a);
t.print(b);
}
này thất bại với lỗi: chức năng không phù hợp cho cuộc gọi đến 'Test :: in (test_it() :: Một &)'
bất cứ ai có thể giải thích cho tôi tại sao điều này xảy ra? Cảm ơn !!!
không chắc chắn 100%, nhưng có thể là do Thử nghiệm nằm trong phạm vi toàn cầu nên không thể 'thấy' A và B có chức năng cục bộ – stijn