Форум программистов, компьютерный форум CyberForum.ru

explicit и последствия. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти минимальные элементы столбцов матрицы http://www.cyberforum.ru/cpp-beginners/thread412299.html
пыталась решить задачу, написала такой вот код #include <iostream> #include <iomanip> #include <stdlib.h> #include <cstdio> #include <conio.h> #include <cmath>
C++ календарь помогите с задачей Нужно оформить через операторы циклов, Ввести на экран дату в формате ДД.ММ.ГГГГ, вывести на экран дату дня через неделю http://www.cyberforum.ru/cpp-beginners/thread412290.html
Как обратиться к элементу матрицы через одномерный массив? C++
Сабж. Возможно ли вообще обратиться например к 2 элементу, 2 строки через одномерный массив? типа matr?
Удалить из строки одинаковые слова. C++
Собственно, вот и само задание. Для заданного предложения необходимо найти и удалить одинаковые слова. Нужно на С. Поискал по форуму, но не нашел ничего подходящего. Буду благодарен за помощь
C++ Комментарии по коду http://www.cyberforum.ru/cpp-beginners/thread412279.html
С помощью шаблона добавления элемента в приведенном примере можно добавить только 1 элемент?? Зачем надо ~TElem(){Inf.ClearMem() (знаю, что нужен, но всеже)?? И с итераторами этими.. Это просто тот же цикл, просто в контейнере?? ///template <typename Inform> struct TElem{ /// Inform Inf; /// TElem *Prev, *Next; /// /// ~TElem(){Inf.ClearMem();} ///};
C++ Поменять местами столбцы в квадратной матрице по правилу: первый с последним, второй с предпоследним и т.д. #include <iostream> #include <conio.h> #include <stdlib.h> #include <time.h> #include <iomanip> #include <stdio.h> #include <malloc.h> using namespace std; подробнее

Показать сообщение отдельно
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
20.12.2011, 06:52     explicit и последствия.
Здравствуйте. Как я узнал, в С++ есть ключевое слово explicit, применяемое к конструкторам с одним параметром ( или, как я понял, большим числом параметров при условии, что все, кроме первого, имеют значения по умолчанию ) для избежания неявных преобразований типов. Возникла небольшая проблема, или скорее вопрос. Как теперь можно сделать доступной инициализацию такого вида на примере моего класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class hugeInt {
    friend std::ostream &operator<<( std::ostream &, const hugeInt & );
    friend std::istream &operator>>( std::istream &, hugeInt & );
 
public:
    explicit hugeInt();
    explicit hugeInt( const long long );
    explicit hugeInt( const char * );
    ~hugeInt();
 
    bool operator!() const;
    bool operator==( const hugeInt & ) const;
    hugeInt operator=( const hugeInt & );
    hugeInt operator=( const long long & );
 
private:
    int *numberPtr;
    size_t size;
 
    int charToDigit( const char & );
    size_t digitsInInt( const long long & );
 
    void setNum( const long long & );
    void setNum( const char * );
};
При таком объявлении и инициализации:
C++
1
2
3
4
5
6
int main()
{
    hugeInt a = 100;
 
    return 0;
}
выскакивает ошибка компиляции:
...\practice\practice\main.cpp(8): error C2440: инициализация: невозможно преобразовать "int" в "hugeInt"
1> Конструктор для class "hugeInt" объявлен как "explicit"

Подскажите, пожалуйста, можно ли при использовании explicit-конструкторов сделать возможным использования такой инициализации при объявлении? Оператор '=' перегрузил, но не помогло.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru