我有一个方法(在 A 类中)有很多不同的重载,我正在创建一个从 A 继承的 B 类,改变方法的行为以在执行它最初的操作之前执行某个操作。问题是必须对所有重载进行此更改,这可以使用模板来完成。
class A{
public:
void method(int);
void method(double);
void method(char);
};
class B : protected A{
public:
template<typename T>
void method(T t){
A::method(t);
}
};
实际上这确实有效,但是使用模板意味着将方法的新代码放在类声明中(即在标题中),这有点乱,我觉得必须有一种方法来放置代码在一个单独的文件中。有一种方法可以做到这一点,那就是将重新定义的方法 B::method() 的代码移动到一个单独的文件中,并为每个重载手动实例化它。如果重载的数量变大,这会很乏味,而且感觉很不自然。所以,因此我的问题是:有没有办法直接告诉编译器为它有效的每种类型实例化模板方法 B::method() ?(即对于每个类型 A::method 都被重载)