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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
VtaMC
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
#1

Описание класса определённого типа - C++

19.03.2010, 22:44. Просмотров 1287. Ответов 20
Метки нет (Все метки)

Доброго времени суток!!!
Могули я описать класс определённого типа данных, например чтобы потом была возможна конструкция:
C++
1
2
3
MyClass object;
int a = 1;
object = a;
Заранее спасибо!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2010, 22:44     Описание класса определённого типа
Посмотрите здесь:

Запрет shared_ptr быть наследником определённого класса - C++
Добрый день, #include <memory> class A { }; class B : public A {

Как сделать шаблон, с параметром-классом - потомком определённого класса? - C++
Хочется сделать шаблон с параметром-классом, который обязан реализовывать определённый интерфейс. class IService { public: ...

Как в векторе объектов пользовательского класса изменить заданное поле у определённого элемента? - C++
Добрый день. Создан вектор из структры: struct man { char name; int age; man(void) {} man(const...

Обработка метода класса в зависимости от типа данного класса - C++
Имеется класс родителя A с методом Update(), этот класс имеет 2 дочерних класса B, C, каждый из них имеет свой метод обработки Update:...

Описание класса матрицы - C++
Доброго времени суток. Пожалуйста помогите с программой, писал долго и кое как вот написал:) Программа на курсовой проект, препод не...

Дополнить описание класса - C++
#include <iostream> #include <vector> #include <algorithm> using namespace std; class CFigure { protected: struct Properties { ...

Построить описание класса - C++
Здравствуйте! Нужна очень ваша помощь!) Может кому-нибудь не сложно написать программу.. Просто такая ситуация, семестр заканчивается, а...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
19.03.2010, 23:02     Описание класса определённого типа #2
Можешь.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class MyClass {
public:
int m_a;
MyClass(){m_a = 0;}
MyClass(int a):m_a (a) {}
    const MyClass& operator = (const int&a){
    m_a=a;
    return *this;
    }
 
 
};
 
int main(){
int a = 20;
MyClass obj;
obj = a;
return 0;
}
VtaMC
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
20.03.2010, 20:58  [ТС]     Описание класса определённого типа #3
Спасибо!
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
20.03.2010, 20:58     Описание класса определённого типа #4
Стараемся.
VtaMC
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
20.03.2010, 21:13  [ТС]     Описание класса определённого типа #5
А можете прокомментировать?
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
20.03.2010, 21:21     Описание класса определённого типа #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
class MyClass {
 
public:                         //доступный интерфейс.
int m_a;
MyClass(){m_a = 0;}      //конструктор по умолчанию
 
 
/*конструктор с параметром позволяет задать значение при создании объекта: допустим: 
MyClass obj(20);            */
 
MyClass(int a):m_a (a) {}
//--------------------------------------------------------------------
        //Операция присваивания =
        const MyClass& operator = (const int&a){
        m_a=a;        //присваиваем переменно класса значения.
        return *this; //возвращаем ссылку на себя так как операции могут иметь серийный вид:a=b=c
        }
 
 
};
 
int main(){
int a = 20;
MyClass obj;  //создаем объект типа MyClass вызывается конструктор по умолчанию ()
obj = a;     /*присваиваем значение(через операцию =) внутренней переменной объекта: m_a */
return 0;
}
VtaMC
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
22.03.2010, 19:52  [ТС]     Описание класса определённого типа #7
Почему-то не присваивает значение таким образом:

C++
1
2
3
4
5
6
7
8
9
10
11
12
//есть функция с параметром MyClass
void myfunc(MyClass a);
//вызываю функцию так
myfunc(12); // выдаёт ошибку приведения типов
//ещё вот
MyClass a = 12;//выдаёт такую же ошибку
//если написать через переменную
int a = 12;
myfunc(a);//такой вариант работает
//так же с объектами
MyClass a;
a = 12; //работает
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
22.03.2010, 20:03     Описание класса определённого типа #8
Цитата Сообщение от VtaMC Посмотреть сообщение
object = a;
если в конструкторе объявлен тип инт то да.
Цитата Сообщение от VtaMC Посмотреть сообщение
Почему-то не присваивает значение таким образом:
весь весь код
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
22.03.2010, 20:07     Описание класса определённого типа #9
У меня работает вот рабочий код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class MyClass {
 
public:                         
int m_a;
MyClass(){m_a = 0;}     
MyClass(int a): m_a(a) {}
        const MyClass& operator = (const int&a){
        m_a=a;       
        return *this; 
        }
 
 
};
void myfunc(MyClass a)  {   }
int main(){
MyClass obj = 20;     
myfunc(10);
return 0;
}
VtaMC
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
22.03.2010, 20:36  [ТС]     Описание класса определённого типа #10
С int заработало. А вот с std::string не работает.
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
22.03.2010, 21:23     Описание класса определённого типа #11
С какаго боку с int что это за волшебство, поставь в классе везде вместо int: std::string
VtaMC
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
22.03.2010, 21:25  [ТС]     Описание класса определённого типа #12
Вот я так и делал... всё равно...
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
22.03.2010, 21:38     Описание класса определённого типа #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string>
class MyClass {
 
public:                         
std::string m_a;
MyClass(){m_a = "";}     
MyClass(std::string a): m_a(a) {}
        const MyClass& operator = (const std::string&a){
        m_a=a;       
        return *this; 
        }
 
 
};
void myfunc(MyClass a)  {   }
int main(){
std::string str = "Ignat";
MyClass obj = str;     
myfunc(str);
return 0;
}
VtaMC
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
22.03.2010, 22:21  [ТС]     Описание класса определённого типа #14
Только присвоение значения при описании не работает (например MyObject a = "строка").
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2010, 19:35     Описание класса определённого типа
Еще ссылки по теме:

Задать описание класса - C++
Задать описание класса, содержащего поля int x, y; double a,b,c и позволяет выполнять следующие методы:Выполнять инициализацию всех полей...

Составить описание объектного типа TMatr - C++
Составить описание объектного типа TMatr, обеспечивающего размещение матрицы произвольного размера с возможностью изменения числа строк и...

Описание без предварительного определения типа - C++
Не мог бы кто показать 2 примера: С предварительным описанием типов и без? Просто чуть запутался

Где найти описание типа IHTMLWindow7? - C++
Здравствуйте, у меня такая проблема - есть IWebBrowser2 и я могу подтягивать без проблем любые интерфейсы из...

Составить описание класса прямоугольников. - C++
Народ, помогите пожалуйста! Нифига не втыкаю как это сделать... Вот сама задача: Составить описание класса прямоугольников со...


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

Или воспользуйтесь поиском по форуму:
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
23.03.2010, 19:35     Описание класса определённого типа #15
MyObject a = "строка": и не будет работать так как это массив символов типа char.
Если хочешь что бы работало добавь следующие вещи в класс

C++
1
2
3
4
5
6
7
MyClass(const char * str) {
m_a = str;
}
 const MyClass& operator = (const char *str){
        m_a=str;       
        return *this; 
 }
Добавь и не чего не удаляй:
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
32
#include <string>
class MyClass {
 
public:                         
std::string m_a;
MyClass(){m_a = "";}  
MyClass(const char * str) {
m_a = str;
}
 
MyClass(std::string a): m_a(a) {}
        const MyClass& operator = (const std::string&a){
        m_a=a;       
        return *this; 
        }
 
  const MyClass& operator = (const char *str){
        m_a=str;       
        return *this; 
 }
 
 
};
void myfunc(MyClass a)  {   }
int main(){
std::string str = "Ignat";
MyClass obj = str;  
MyClass obs_s = "dddd";   
obs_s = "ssa";
myfunc(str);
return 0;
}
Добавлено через 36 минут
Если не секрет что ты хочешь изобрести с этим классом.
Мое предположение ты хочешь сделать оболочку std::string...

Добавлено через 20 часов 4 минуты
Или внутри класс используется строка, а ты ей хочешь управлять через класс.
Yandex
Объявления
23.03.2010, 19:35     Описание класса определённого типа
Ответ Создать тему
Опции темы

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