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

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

Войти
Регистрация
Восстановить пароль
 
Shtirliz72
201 / 161 / 38
Регистрация: 25.10.2013
Сообщений: 527
#1

Структуры и определение операторов для работы с ними - C++

26.10.2013, 08:56. Просмотров 435. Ответов 0
Метки нет (Все метки)

Есть отдельный файл с базовыми структурами, которые используются во всём проекте. Есть файл с классом, в котором используется собственная структура, забивающая часть изначальных данных в остальные структуры. Внутри проекта происходят преобразования из внутренней структуры во внешние с помощью operator=. Однако сам operator= прописать в классе не удаётся. Как и можно ли это реализовать не ломая структуру проекта?
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//------structs.h-------
struct A {
    QString str;
    int number;
};
 
struct B {
    QString str;
    double fnumber;
};
 
//------myclass.h-------
#include "structs.h"
 
class MyClass
{
    struct C {
        QString str;
        int number;
        double fnumber;
    };
    // сюда хотел вставить объявление операторов, но, увы никак не получилось
public:
    A funcA();
    
private;
    B funcB();
    C funcC();
};
 
//------myclass.cpp-------
A MyClass::funcA()
{
    A a;
    a = funcC();
    return a;
}
 
B MyClass::funcB()
{
    B b;
    b = funcC();
    return b;
}
 
C MyClass::funcC()
{
    C c;;
    // do something
    return c;
}
 
//---Операторы преобразования---
A& A::operator=(const C &from)
{
    str = from.str;
    num = from.num;
    return *this;
}
 
B& B::operator=(const C &from)
{
    str = from.str;
    fnum = from.fnum;
    return *this;
}
И ещё есть вопрос по реализации функции для контейнера, хранящего структуры. Возможно ли сделать поиск в таком виде? Или его надо делать как-то по другому? Очень не охото делать данную функцию поиска в отрыве от контейнера.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
struct A {
    QString name;
    int number;
};
typedef QVector<A> As;
 
//вызов функции поиска где-то в проекте
void SomeClass:someFunction()
{
    As as;
    A *a = as.search("Name");
}
 
//собственно функция поиска
A* As::search(const String &name)
{
    iterator = end();
    for (iterator i = begin; i != end; ++i)
        if (!i->name.compare(name))
            return i; // Или же здесь лучше return &(*i)?
}
Добавлено через 16 часов 24 минуты
Ладно, народ мучать больше не буду. Вопросы снимаются.
Первый вопрос решил через создание в приватной структуре(которая в классе) перегруженной функции забивания данных в другие структуры. Хоть теперь код и не выглядит так красиво, но сойдёт. Плюс написал там оператор преобразования (operator T() {}) к другим структурам.
Второй вопрос решил простым созданием класса, наследующим QVector<A>. Хотя всё же интересно можно ли было обойтись без этого.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2013, 08:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структуры и определение операторов для работы с ними (C++):

Перегрузка операторов для работы с матрицами - C++
нужно перегрузить оператор + для сложения двух матриц. Всё сделал, и всё работет. class overload { private: int** arr; ...

Перегрузка операторов для работы со стеком - C++
Текст задания: Создать объект &quot;динамический стек&quot;. Перегрузить операции +, -, +=, -= для выполнения манипуляций со стеком. Вот...

Считать числа из файла в массив для дальнейшей работы с ними - C++
дан файл, в котором записаны данные: X 1 2 35 41 5 63 7 80 нужно считать ЧИСЛА из файла в массив для работы с ними. Никак не...

Программа для демонстрации работы побитовых операторов не компилируется - C++
Добрый вечер всем! Я учусь программированию на С++. Написал небольшую программу из книжки. Программа для демонстрации работы побитовых...

Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this - C++
Добрый день . Помогите понять принцип работы перегрузки операторов. объясните пожалуйста в зависимости от чего зависит агрумент при...

Структуры данных для хранения и работы с матрицами - C++
Доброго времени суток! Есть матрица, у которой надо периодически удалять то столбец целиком, то строку. Вариант &quot;вектор векторов&quot; дает...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2013, 08:56
Привет! Вот еще темы с ответами:

Определение класса для работы с одномерным динамическим массивом - C++
задача : В массиве А(N) поменять местами последний отрицательный элемент с максимальным элементом. делал в BC++ #include &lt;iostream.h&gt; ...

Структуры и всё связаное с ними - C++
Никак не могу разобраться со структурами. Завтра зачет по этой тебе, а я фиг что понимаю) Можете помочь разобраться как их объявлять,...

классы,определение операторов - C++
Определите класс Vec4 как вектор из 4-х float. Определите оператор для доступа к элементу вектора. Определите операторы +, - для...

Реализуйте интерфейс динамической структуры list для работы с объектами класса А - C++
Добрый день товарищи программисты. Столкнулся с задачей и никак не могу решить... Так вот вопросы по заданию заключаются в следующем: ...


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

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

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