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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 832
#1

Параметры по умолчанию в функции - C++

26.03.2013, 14:52. Просмотров 314. Ответов 2
Метки нет (Все метки)

Всем привет.
Есть такой класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <typename T> class MyClass
{
public:
    MyClass(T *_beg, T *_en):beg(_beg),en(_en) {}
    T* begin() { return this->beg; }
    T* end() { return this->en; }
    void print (T* = begin(),T* = end()) const;
private:
    T *beg;
    T *en;
}MyObj;
 
template <typename T> void MyClass<T>::print(T *_beg,T *_en) const
{
    for(; _beg!=_en; ++_beg)
        cout<<*_beg<<" ";
}
Хочу чтобы MyObj.print(); (то есть без параметров) вызывалась с параметрами beg и en данного объекта, то есть
C++
1
2
3
void print (T* = begin(),T* = end()) const;
или 
void print (T* = beg,T* = en) const;
При первом варианте выдает пишет, что не может вызвать функцию без объекта, а при второй - ошибку выдает в объявлении закрытых членов beg и en.

Пробовал еще вот так:
C++
1
    void print (T* = this->begin(),T* = this->end()) const;
Но не помогло.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2013, 14:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Параметры по умолчанию в функции (C++):

Параметры функции по умолчанию - C++
Можно ли в качестве параметра по умолчанию указать элимент класса ? Хотелось бы сделать как то так char* SendMessage(char*...

Параметры функции по умолчанию - C++
Приветствую всех! Уважаемые эксперты С++, подскажите, значения параметров по умолчанию должны задаваться в прототипе или в реализации...

Параметры шаблонов функции по умолчанию - C++
есть функция template&lt;class T&gt; T sum(valarray&lt;T&gt; x, size_t left = 0, size_t right = 0){ T result = 0; if(right == 0)...

Параметры по умолчанию в С. - C++
Всем привет! Захотел воспользоватся параметрами по умолчанию в си-шном проекте. И получил следующие ошибки: Действительно данный...

ODBC, параметры по умолчанию - C++
Доброго утра! Хочу на ПК програмно прописывать источники ODBC. Пример абстрактного, работающего кода. Это некий копи паст - так что не...

Указатель на функцию и параметры по умолчанию - C++
Приветствую! Есть такая задача - мне нужно передавать в специальную функцию массив и указатель на функцию. Функции эти для сортировки, и...

2
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.03.2013, 15:06 #2
Параметры по умолчанию для функций должны быть известны в момент компиляции.
В Вашем случае подойдет перегрузка функции print:
C++
1
2
3
void print (T* b, T* e) const; // Задаются оба значения
void print (T* b ) const; // Задается только начало, конец - по умолчанию
void print () const; // Всё по умолчанию
1
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 832
26.03.2013, 19:31  [ТС] #3
Я понял. Спасибо. Можно закрывать.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2013, 19:31
Привет! Вот еще темы с ответами:

Параметры по-умолчанию в виртуальных функциях - C++
Подскажите, это ведь UB ? #include &lt;iostream&gt; class Base { int a; public: Base() : a(1) {}

Оптимизация. Перегрузки vs параметры по умолчанию - C++
Вот я думаю, какой вариант реализации будет быстрее для выполнения программы. Такой: void Show(double restTime = 0) { ...

Аргументы функции по умолчанию - C++
Написать функцию, которая принимает два параметра типа int: высоту и ширину. Данная функция рисует на экране прямоугольник, размер которого...

Аргументы функции по умолчанию - C++
Допустим у нас имеется некоторая функция, некоторые аргументы которой специфицируются как аргументы, допускающие значения по умолчанию. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru