Я думаю, что проблема в том, что универсальные классы на самом деле совсем не одного типа. Это просто шаблоны, которые создают совершенно новые типы во время компиляции (если я правильно понимаю). Следовательно, MyClass
и MyClass
являются полностью различными типами, в зависимости от времени выполнения. Это также могут быть MyIntClass
и MyStringClass
, которые вы, очевидно, не можете иметь в одном и том же списке, не поместив их в квадрат. Они не (обязательно) наследуют один и тот же базовый класс, реализуют те же интерфейсы или что-то еще. Они такие же разные, как и любые другие два типа, и вы должны относиться к ним как таковым (даже если вы думаете, что знаете лучше).
Конечно, вы можете сделать так, чтобы они реализовали интерфейс, унаследовали базовый объект или любые другие опции, которые уже были предоставлены. Взгляните на ответ commongenius , чтобы найти хороший способ сделать это.
Попробуйте
netstat -ap | grep TheChosenPort#
и посмотрите, не прослушивает ли что-нибудь эти порты TCP или UDP.
Если вы задаете этот вопрос, похоже, что у вас действительно старая версия. Если бы вы сделали это в последней версии, то увидите следующее:
% ./memcached
failed to listen on TCP port 11211: Address already in use