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

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

Войти
Регистрация
Восстановить пароль
 
ElwooD07
0 / 1 / 1
Регистрация: 01.02.2012
Сообщений: 16
#1

Объект класса без аргументов и с ними - C++

01.02.2012, 20:01. Просмотров 504. Ответов 5
Метки нет (Все метки)

Доброго времени суток.
Можно ли сделать так, чтобы:
1. объект класса, вызванный без аргументов, возвращал некое значение, которое в нем содержится.
2. объект класса, вызванный с аргументами, присваивал это значение своей закрытой переменной.
У меня закрытый символьный массив prarr[40] и конструктор:
C++
1
2
3
4
5
6
class params {
prarr[40];
public:
params(char *str="");
//...
};
C++
1
2
3
4
5
6
//Конструктор такого вида лишь инициализирует prarr[]:
params::params(char *str="") {
strcpy(prarr, str);
}
//Но конструктор такого вида объявить нельзя:
&params()
Пробовал перегрузкой круглых скобок но не получается:
C++
1
2
3
4
char operator()(char *str="") {
strcpy(prarr, str);
return prarr;
}
Цель - сделать так, чтобы работало, к примеру, выражение
C++
1
2
params a("abcd");
cout << a;
То есть, чтобы объект возвращал строку.

C++
1
2
3
4
//Я знаю что такая запись бред, из-за того что используется конструктор:
cout << a(); // ,
//а так ничего не выходит:
cout << a;
Подскажите, пожалуйста, как решить эту проблему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2012, 20:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объект класса без аргументов и с ними (C++):

Создание метода без класса и аргументов разве нельзя ? - C++
Всем доброго времени суток. А разве нельзя создать обычный метод под main без аргументов типа того Ошибка error C3861: LAB5_1_8:...

Можно ли создать объект экспортируемого из DLL класса без лишних манипуляций? - C++
Привет! Есть DLL, экспортирую из неё класс, можно ли в коде, имея header (файл с описанием DLL-ки) этой DLL, создать экземпляр этого...

Приём константных векторов класса, как аргументов в методе другого класса - C++
Есть такой класс: class Order { private: int numberOrder; map &lt;string, int&gt; catalogDish; double totalCost; public: ...

Использование в качестве поля класса указатель на объект другого класса - C++
Ошибка в названии - &quot;указателЯ&quot; Вот, пытаюсь освоить ООП (пока только учусь): создаю класс person (человек) и car (модель машины). ...

Указатель на объект базового класса и адрес объекта производного класса - C++
Пример кода: class Class1 { public: Class1(int x) { j = new int; *j = x; } ~Class1() {delete j;}

Ошибка компиляции (преобразование объекта класса в объект другого класса) - C++
Друзья, добрый день! Не могу понять почему выдается ошибка компиляции... Прога преобразует доллары США в старые Британские фунты. Но...

5
soon
2541 / 1306 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
01.02.2012, 20:03 #2
Цитата Сообщение от ElwooD07 Посмотреть сообщение
1. объект класса, вызванный без аргументов, возвращал некое значение, которое в нем содержится.
2. объект класса, вызванный с аргументами, присваивал это значение своей закрытой переменной.
Вам get/set надо реализовать что-ли?
0
ElwooD07
0 / 1 / 1
Регистрация: 01.02.2012
Сообщений: 16
01.02.2012, 20:05  [ТС] #3
Цитата Сообщение от soon Посмотреть сообщение
Вам get/set надо реализовать что-ли?
Да, но не с помощью вызова функции из объекта, а чтобы класс "по-умолчанию" в инструкции cout << a возвращал свою строку, а с параметром записвал эту строку, т.е. работало бы rapams a("qwerty").
0
soon
2541 / 1306 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
01.02.2012, 20:12 #4
Цитата Сообщение от ElwooD07 Посмотреть сообщение
чтобы класс "по-умолчанию" в инструкции cout << a возвращал свою строку
Можно перегрузить <<.

Цитата Сообщение от ElwooD07 Посмотреть сообщение
а с параметром записвал эту строку, т.е. работало бы rapams a("qwerty").
Обычный конструктор с параметрами.
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
26
27
28
29
30
31
#include <iostream>
#include <cstring>
 
class Foo
{
    char* str;
    
public:
    Foo(const char* s): str(new char [std::strlen(s)])
    {
        std::strcpy(str, s);
    }
    
    ~Foo()
    {
        delete[] str;
    }
    
    friend std::ostream& operator << (std::ostream& stream, const Foo& f)
    {
        stream << f.str;
        return stream;
    }
};
 
int main()
{
    Foo f("abcd");
    std::cout << f << std::endl;
    return 0;
}
1
ElwooD07
0 / 1 / 1
Регистрация: 01.02.2012
Сообщений: 16
01.02.2012, 20:18  [ТС] #5
Спасибо! Мозгом как-то до перегрузки << не добрался
0
igorrr37
1647 / 1275 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
02.02.2012, 03:57 #6
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
26
27
28
29
30
#include <iostream>
#include <cstring>
 
class Params
{
public:
    Params(const char* _arr = "")
    {
        strcpy(arr, _arr);
    }
    operator const char*() const
    {
        return arr;
    }
    void operator()(const char* _arr)
    {
        strcpy(arr, _arr);
    }
private:
    char arr[40];
};
 
int main()
{
    Params a = "ghgh";
    std::cout << a << std::endl;
    a("uuuutt");
    std::cout << a << std::endl;
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2012, 03:57
Привет! Вот еще темы с ответами:

как узнать,является данный объект класса А1 наследником класса А2 - C++
Всем привет)есть классы S, A1, A2, B1, B2. Иерархия наследования следующая S - Является родителем для всех классов и он имеет...

Создать объект внутри класса, который может вызывать функцию этого класса - C++
Ребята помогите уже несколько дней мучаюсь. Хочу сделать программу в консоле демонстрации работы лифта в здании 2 этажа. Сделал класс...

Правда, что указатель класса-наследника не может указывать на объект класса-родителя? - C++
Доброго времени суток! Пример кода ниже. Правда ли , что указатель класса-наследника не может указывать на объект класса-родителя? ...

Создание статической функции класса, которая принимает экземпляр этого же класса как объект - C++
Привет. Есть такой код class Model { public: Model(); Model(int verticesSize, int facesSize); ~Model(); static void...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
02.02.2012, 03:57
Ответ Создать тему
Опции темы

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