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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить сколько товара можно купить без сдачи http://www.cyberforum.ru/cpp-beginners/thread987798.html
Задаётся произвольная цена товара (допустим 11,11) задается произвольное количество монет (10р 5р 2р 1р 50к 10к 5к) допустим каждой по 5 сколько можно купить пива на это количество монет (при данных условиях = 8) сколько можно купить пива без сдачи? По данным условиям мы должны придти к ответу 5 так как самой маленькой монеты (5 копеек) у нас всего 5 штук. Подскажите как можно...
C++ cstdio vs fstream Есть программа, виводящяя 16-ричный дамп бинарного файла (вместо каждого байта входного файла виводится значение в 16-ричной системе) Для работы с файлами использованы функции cstdio. а нужно использовать функции fstream, как это сделать? #include <stdio.h> #include <stdlib.h> int main () { FILE * pFile; long lSize; char * buffer; size_t result; http://www.cyberforum.ru/cpp-beginners/thread987791.html
Парсер XML файлов C++
Доброго времени. Нужен парсер для такой цели : 1) Хранить/сохранять объекты программы, и загружать обратно. Собственно, есть ли нужные библиотеки, или нужно писать парсер самому ? Если самому, то каким способом, посимвольным чтением ? Важно то, что бы он был кроссплатформенным. P.S.
C++ Объясните
Вот собственно и программа... #include <stdlib.h> #include <stdio.h> #include <math.h> using namespace std; int main()
C++ Что не так с программой? http://www.cyberforum.ru/cpp-beginners/thread987756.html
Написал прогу по заданию,вроде все верно но в ответ не совпадает с тем что я решал на калькуляторе: #include<iostream> #include<conio.h> #include<math.h> #include<iomanip> using namespace std; int main() { double x;
C++ Где нагрешил? Подскажите пожалуйста почему программа в в конце находит U минимальное, а х и у соответствующие к нему выводит непонятно откуда? #include "stdafx.h" #include <iostream> #include <math.h> #include <iomanip> #include <fstream> using namespace std; fstream file; подробнее

Показать сообщение отдельно
Shtirliz72
200 / 160 / 38
Регистрация: 25.10.2013
Сообщений: 527
26.10.2013, 08:56     Структуры и определение операторов для работы с ними
Есть отдельный файл с базовыми структурами, которые используются во всём проекте. Есть файл с классом, в котором используется собственная структура, забивающая часть изначальных данных в остальные структуры. Внутри проекта происходят преобразования из внутренней структуры во внешние с помощью 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>. Хотя всё же интересно можно ли было обойтись без этого.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru