Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> шаблоны-члены для шаблона класса, проблема определения 
:(
    Опции темы
Jcs
Дата 22.4.2004, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 1.10.2003

Репутация: нет
Всего: нет



Есть класс
Код

template<typename T>
class my_class
{
public:

   my_class(const my_class<U>& x);
}

Добавлено @ 15:02
прошу прощения, на "отправить" нажал случайно
Код

template<typename T>
class my_class
{
public:
  tempate<typename U>
  my_class(const my_class<U>& x);
}


Как определить конструктор вне тела класса? Возможно ли это? Заранее спасибо.
PM   Вверх
bel_nikita
Дата 22.4.2004, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Такой пример при инстанцировании компилится не будет!
Цитата
Как определить конструктор вне тела класса? Возможно ли это?
Возможно. Вот что-то типа того компилится : (хотя неиного отличается rolleyes.gif , но думаю суть поймешь)
Код
template<typename T>
class my_class
{
public:
 template<typename U>
   my_class( my_class<U> & x){};
};

//*** Вот то чего нехватает!
template<>
class my_class<int>
{
public:
   //my_class( my_class<T> & x){};
   my_class(const int& x){};
}; //*** Надо явно определить, что б потом использовать

int main(int argc, char* argv[])
{
 int qqq=2;
 my_class<int> asasas(qqq);
 my_class<char> qwqwqww(asasas);
}

Что бы компилилась строка:
Цитата
tempate<typename U>
  my_class(const my_class<U>& x);
надо что бы my_class<> был определен.
А у тебя получается, что ты хочешь пропихнуть my_class не определив его.

Это сообщение отредактировал(а) bel_nikita - 22.4.2004, 15:30


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
srd
Дата 22.4.2004, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



Всё гораздо проще.

Код

template<class T>
class my_class
{
public:
 template<class U>  
 my_class(const my_class<U>& x);
};

template<class T> template<class U> my_class<T>::my_class(const my_class<U> &x)
{
}




--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Jcs
Дата 23.4.2004, 06:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 1.10.2003

Репутация: нет
Всего: нет



Спасибо, все действительно просто)))
PM   Вверх
bel_nikita
Дата 10.6.2004, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



srd
Цитата
Код 

template<class T>
class my_class
{
public:
template<class U> 
my_class(const my_class<U>& x);
};

template<class T> template<class U> my_class<T>::my_class(const my_class<U> &x)
{
}

поделись секретом, на чем компилил?


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
srd
Дата 11.6.2004, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



Это нормальный синтаксис для определения шаблонов-членов вне шаблонов-классов и должен пониматься любым компилятором. Я проверил в шестом Билдере и VC++.NET 2003. Могу и с gcc проверить, если надо, просто перезагружаться лень ;)


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
bel_nikita
Дата 11.6.2004, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



srd
На MSVC6 проверь wink.gif
Понятно. Спасибо
Я не говорю, что синтаксис ненормальный. Просто такое в шестом вижуале не компилится mad.gif



--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
srd
Дата 12.6.2004, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



Я проверял такой код:

Код

template<class T>
class my_class
{
public:
my_class(void) {}
template<class U>  
my_class(const my_class<U>& x);
};

template<class T> template<class U> my_class<T>::my_class(const my_class<U> &x)
{
}

int _tmain(int argc, _TCHAR* argv[])
{
my_class<int> a1;
my_class<char> a2(a1);
return 0;
}




--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
bel_nikita
Дата 12.6.2004, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



srd
на чем?
А, видно, что не в вижуале

VC6 такое не пропускает. Пропустит только, если опреределение будет в классе.

Это сообщение отредактировал(а) bel_nikita - 12.6.2004, 13:59


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.4936 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.