IZ
Size: a a a
IZ
ИШ
struct A {
template<typename... Args>
void Do(int x, string s, Args&& args...);
};
struct B {
template <typename... Args>
void Do(Args&& args...);
};
A::Do
, либо B::Do
. Из-за этого их приходится реализовывать дважды:void DoSomething(char c, bool q, int x, string s, A& a);
void DoSomething(char c, bool q, B& b);
A
и B
за общим интерфейсом, чтобы не дулировать код функций DoSomething. Всё, что удалось придумать — это сделать DoSomething
шаблонной и передавать туда некое подобие лямбды, которая дёргает либо A
, либо B
. DoSomething
перетащить из cpp-файла в заголовчный. А вот как сделать так, чтобы реализации остались в cpp-файле, пока придумать не удалось. AT
struct A {
template<typename... Args>
void Do(int x, string s, Args&& args...);
};
struct B {
template <typename... Args>
void Do(Args&& args...);
};
A::Do
, либо B::Do
. Из-за этого их приходится реализовывать дважды:void DoSomething(char c, bool q, int x, string s, A& a);
void DoSomething(char c, bool q, B& b);
A
и B
за общим интерфейсом, чтобы не дулировать код функций DoSomething. Всё, что удалось придумать — это сделать DoSomething
шаблонной и передавать туда некое подобие лямбды, которая дёргает либо A
, либо B
. DoSomething
перетащить из cpp-файла в заголовчный. А вот как сделать так, чтобы реализации остались в cpp-файле, пока придумать не удалось. IZ
struct A {
template<typename... Args>
void Do(int x, string s, Args&& args...);
};
struct B {
template <typename... Args>
void Do(Args&& args...);
};
A::Do
, либо B::Do
. Из-за этого их приходится реализовывать дважды:void DoSomething(char c, bool q, int x, string s, A& a);
void DoSomething(char c, bool q, B& b);
A
и B
за общим интерфейсом, чтобы не дулировать код функций DoSomething. Всё, что удалось придумать — это сделать DoSomething
шаблонной и передавать туда некое подобие лямбды, которая дёргает либо A
, либо B
. DoSomething
перетащить из cpp-файла в заголовчный. А вот как сделать так, чтобы реализации остались в cpp-файле, пока придумать не удалось. w
struct A {
template<typename... Args>
void Do(int x, string s, Args&& args...);
};
struct B {
template <typename... Args>
void Do(Args&& args...);
};
A::Do
, либо B::Do
. Из-за этого их приходится реализовывать дважды:void DoSomething(char c, bool q, int x, string s, A& a);
void DoSomething(char c, bool q, B& b);
A
и B
за общим интерфейсом, чтобы не дулировать код функций DoSomething. Всё, что удалось придумать — это сделать DoSomething
шаблонной и передавать туда некое подобие лямбды, которая дёргает либо A
, либо B
. DoSomething
перетащить из cpp-файла в заголовчный. А вот как сделать так, чтобы реализации остались в cpp-файле, пока придумать не удалось. ИШ
Do
принимает paramter-pack — для него нельзя сделать виртуальный метод (w
Do
принимает paramter-pack — для него нельзя сделать виртуальный метод (MK
MK
ИШ
struct B {```
template <typename... Args>
void Do(Args&& args...);
};
AD
struct A {
template<typename... Args>
void Do(int x, string s, Args&& args...);
};
struct B {
template <typename... Args>
void Do(Args&& args...);
};
A::Do
, либо B::Do
. Из-за этого их приходится реализовывать дважды:void DoSomething(char c, bool q, int x, string s, A& a);
void DoSomething(char c, bool q, B& b);
A
и B
за общим интерфейсом, чтобы не дулировать код функций DoSomething. Всё, что удалось придумать — это сделать DoSomething
шаблонной и передавать туда некое подобие лямбды, которая дёргает либо A
, либо B
. DoSomething
перетащить из cpp-файла в заголовчный. А вот как сделать так, чтобы реализации остались в cpp-файле, пока придумать не удалось. DoSomething
шаблонной и передавать туда некое подобие лямбдыstd::function
ИШ
IZ
ИШ
IZ
m
struct A {
template<typename... Args>
void Do(int x, string s, Args&& args...);
};
struct B {
template <typename... Args>
void Do(Args&& args...);
};
A::Do
, либо B::Do
. Из-за этого их приходится реализовывать дважды:void DoSomething(char c, bool q, int x, string s, A& a);
void DoSomething(char c, bool q, B& b);
A
и B
за общим интерфейсом, чтобы не дулировать код функций DoSomething. Всё, что удалось придумать — это сделать DoSomething
шаблонной и передавать туда некое подобие лямбды, которая дёргает либо A
, либо B
. DoSomething
перетащить из cpp-файла в заголовчный. А вот как сделать так, чтобы реализации остались в cpp-файле, пока придумать не удалось. T
struct A {
template<typename... Args>
void Do(int x, string s, Args&& args...);
};
struct B {
template <typename... Args>
void Do(Args&& args...);
};
A::Do
, либо B::Do
. Из-за этого их приходится реализовывать дважды:void DoSomething(char c, bool q, int x, string s, A& a);
void DoSomething(char c, bool q, B& b);
A
и B
за общим интерфейсом, чтобы не дулировать код функций DoSomething. Всё, что удалось придумать — это сделать DoSomething
шаблонной и передавать туда некое подобие лямбды, которая дёргает либо A
, либо B
. DoSomething
перетащить из cpp-файла в заголовчный. А вот как сделать так, чтобы реализации остались в cpp-файле, пока придумать не удалось. S
IZ