Russian Qt Forum
Ноябрь 24, 2024, 03:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: 2 небольших вопроса  (Прочитано 7914 раз)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #15 : Сентябрь 24, 2013, 12:58 »

Ссылочку про конструкторы не дадите? Улыбающийся
помимо стандарта — любая книжка по С++
приведение типа необходимо только если отсутствует конструктор с передаваемым типом или передаваемый тип не может быть преобразован ни к одному из принимаемых типов конструктора (но если конструктор explicit, то приведение не будет выполняться).
Плюс еще один случай - для принимающего должен быть разрешен конструктор копирования, (по умолчанию или свой), хотя он и не используется. Пример
Код
C++ (Qt)
struct CTest {
CTest( int a = 0 );
 
private:
CTest( const CTest & ) {}
};
 
CTest test = 1;   // ошибка
в данном примере ошибка возникает лишь потому, что отсутствует реализация паблик конструктора — после добавления тела компилируется без ошибок (компилятор от студии 2012)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #16 : Сентябрь 24, 2013, 13:50 »

в данном примере ошибка возникает лишь потому, что отсутствует реализация паблик конструктора — после добавления тела компилируется без ошибок (компилятор от студии 2012)
Я бы на такой авторитет как MSVC не ссылался Улыбающийся  gcc вообще error, icc отсыпает варнинг
Цитировать
warning #734: "CTest::CTest(const CTest &)" (declared at line 12), required for copy that was eliminated, is inaccessible

Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #17 : Сентябрь 24, 2013, 21:14 »

что было под рукой — тем и проверил Улыбающийся действительно, clang тоже выдает ошибку «вызов приватного конструктора».
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.128 секунд. Запросов: 23.