|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.07.2008, 11:00 | #1 |
Новичок
Джуниор
Регистрация: 22.07.2008
Сообщений: 1
|
Что же это, бага vs2005, или VC++ 6.0?
фрагмент сырцов :
template < class T > class List { element< T >* first; List() : first(NULL) {} List( List< T >& l ) {} friend List< T >& factory(); public: List< T >& operator ++ (); List< T >& operator ++ ( int ); List< T >& operator -- (); List< T >& operator -- ( int ); }; template < class T > List< T >& factory() { return *(new List< T >); } //// на эту строку ругаеццо компилятор vs2005 Майкрософтный С++ 6.0 компилит всё отлично. Студия 2005 выдаёт вот что, несмотря на то что функция френдовая : error C2248: 'List<T>::List' : cannot access private member declared in class 'List<T>' Т.е. не может вызваться конструктор по умолчанию. Компилится всё если сделать factory статик паблик методом класса, но это уже другая история. Вопрос в чём - чья это бага, с френдовой ф-цией : ms vs2005, vc++ 6.0 или же моя? =) |
24.07.2008, 22:30 | #2 |
...
Форумчанин
Регистрация: 01.06.2008
Сообщений: 134
|
Это следствие не следованию стандарту C++ при переносе кода с одного компилятора на другой / с одной версии, на другую. У VC++ 6.0 со стандартом очень плохо, но хотя бы это постепенно исправляется в новых версиях.
Ваша проблема зарыта в том, что конструктор объявлен как private-член, т.е. фактически он запрещен. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Бага или фича функции Replace Function (VBA)? | Alkaline | Microsoft Office Excel | 3 | 27.12.2007 11:26 |