Я читал листке по этому адресуКак утверждение T :: x (y) неоднозначно, если T является аргументом шаблона?
, и я понял, что я понятия не имею, какой тип T :: х может представлять возможно. Вот это ВЫПИСКА
template<class T> class A
{
T::x(y);
typedef char C;
A::C d;
}
Оператор T :: х (у) неоднозначна. Это может быть вызов функции x() с нелокальным аргументом y или может быть объявлением переменной y с типом T :: x. C++ интерпретирует это утверждение как вызов функции. Чтобы компилятор интерпретировал этот оператор как объявление , вы должны добавить ключевое слово typename в начало . Утверждение A :: C d; плохо сформирован. Класс A также относится к A и, следовательно, зависит от параметра шаблона. Вы должны добавить имя типа ключевое слово в начале этого заявления:
Я хотел бы понять, как может быть переменной у типа Т :: х, как бы эта работа, и что это могло бы означать? Что будет x?
Спасибо :-)
Похоже, что ваша учетная запись была сделана, чтобы ответить на этот вопрос :) –
Всего несколько простых вопросов, если я определяю класс внутри другого (x внутри Y). Это будет тип Y :: x? Я думаю, что нижний регистр x - это то, что меня отбросило, я не понимал, что это вложенный класс, если это так. Также T :: iterator itr (container.begin()); построение типа, как иначе это можно интерпретировать? Sry для моего невежества по теме – rubixibuc
@ rubixibuc- (Обратите внимание, что я немного обновил свой ответ, прежде чем получил это сообщение, поэтому вы можете прочитать конец моего редактирования). Я не уверен, что понимаю, что вы подразумеваете под «конструированием типа»; вы можете уточнить? – templatetypedef