2017-03-01 23 views
0

我的家庭作业有问题。我所面临的问题是这样的: 问题是这样的: ((写,打印人/员工以最大的sort_param.use模板编程的名称的程序)。) 人和员工都是这样定义的:如何找出传递给模板定义的函数的类型?

struct human 
{ 
char name[30]; 
char * family; 
int id; 
int sort_param; 
}; 

struct employee 
{ 
human h; 
char post[50]; 
int sort_param; 
}; 

如您所见,打印员工/人员的名称取决于传递给该函数的类型。我的问题是: 如何告诉计算机根据数据类型采取行动。我的意思是,如果类型为员工则:

cout << employee.h.name << endl; 

如果类型是人,则:

cout << human.name << endl; 
+3

从'employee'和'human'(以及'const'引用)重载的函数打印名称,而不是直接打印。通常的规则适用:额外的间接级别解决了这个问题。使用C++ 17,你可以使用'如果constexpr',但那还不是真的可用。 –

+0

*编写一个程序,用最大的sort_param.use模板编程打印人员/员工的姓名。*函数/程序的输入是什么? –

+0

如果您需要知道类型,模板是错误的方法。您应该重载该函数。即使在较小规模上,像DietmarKühl建议 – StoryTeller

回答

1

使用重载函数,只需要调用你的函数的参数之一的类型可以是员工

void print_name(const employee& emp) 
{ 
    cout << emp.h.name << endl; 
} 
void print_name(const human& hum) 
{ 
    cout << hum.name << endl; 
} 

的参数进行编辑。

+0

当然,这应该是'void print_name(const employee&emp){...}'等等。问题被标记为[tag:C++]。 – IInspectable

+0

@IInspectable是的,谢谢,我编辑。 – Alper

+0

我不想使用函数重载。但我认为这是最有效和最有用的一个。无论如何,谢谢! –

相关问题