0
这段代码正式确定吗?因为我不知道如果我可以专门模板函数在子类如本例:专门针对儿童的父母可变参数函数模板
main.cpp中:
class Consumer
{
public:
Consumer() = default;
~Consumer() = default;
template<typename... T>
void echo(iConnector& connector, T... args)
{
connector.transfer(args...);
}
};
int main(int argc, char** argv) {
Consumer c;
intConnector i;
stringConnector s;
c.echo(i, 1);
c.echo(i, std::string("aaa"));
c.echo(s, std::string("aaa"));
c.echo(s, 1);
return 0;
}
iConnector.h
class iConnector {
public:
iConnector() = default;
virtual ~iConnector() = default;
template<typename... T>
void transfer(T... args) { std::cout << "Not defined\n"; }
};
intConnector.h
class intConnector : public iConnector {
public:
intConnector() = default;
virtual ~intConnector() = default;
};
intConnector.cpp
template<>
void iConnector::transfer<int>(int i)
{
std::cout << "intConnector " << i << "\n";
}
stringConnector.h
class stringConnector : public iConnector {
public:
stringConnector() = default;
virtual ~stringConnector() = default;
}
stringConnector.cpp
template<>
void iConnector::transfer<std::string>(std::string str)
{
std::cout << "stringConnector " << str << "\n";
}
谢谢你的建议。 阿德里安
感谢您的回答。 –
我忘了提及这应该张贴在http://codereview.stackexchange.com/ –
如果你重载'iConnector :: transfer(int i)',如果你通过'transfer(1L)'将被调用? – aschepler