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

Неправильно работает функция CArray.Add() - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не верный результат при обработке одномерного массива http://www.cyberforum.ru/cpp-beginners/thread1141885.html
Написать программу по обработке одномерных массивов. Размеры массивов вводить с клавиатуры. В консольном приложении предусмотреть возможность ввода данных как с клавиатуры, так и с использованием...
C++ Аналог flushall Подскажите пожалуйста что предлагает стандарт с++ как аналог flushall? В задании чётко указано не использовать системные вызовы через system и не использовать flushall ... http://www.cyberforum.ru/cpp-beginners/thread1141873.html
Перевести из Perl в C++ C++
Всем добра! :) Переводил как-то прогу одну из Perl в C++ и возникло несколько моментов в Perl функция sqrt умеет вычислять значения корня из комплексного числа, а как научить C++ sqrt работать с...
Списки, однонаправленный кольцевой C++
Ребят пожалуйста нужна помощь в написание программки на си 2010,задание: Найти целое число по числу, введенному с клавиатуры и после него добавить новое число. За ранние спасибо=)
C++ SDL mouse http://www.cyberforum.ru/cpp-beginners/thread1141853.html
если обработка нажатия на левую кнопку мыши это if (occur.type == SDL_MOUSEBUTTONDOWN) if(occur.button.button == SDL_BUTTON_LEFT) { // что-то.. } а обработка движения мыши...
C++ Как записать результат в файл здравствуйте! имеется код на С++, все работает, результат выводит на экран.. но нужно чтоб выводил результат в файл.txt... помогите пожалуйста переделать, СПАСИБО! #include <iostream.h> #include... подробнее

Показать сообщение отдельно
FreestyleDM
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 16
08.04.2014, 00:48  [ТС]
Заработало! Спасибо большое. Из за одного конструктора вот такая фигня была..
А в остальном не могли бы посмотреть, правильно ли описаны классы? Или какие то рекомендации(по названиям или как реализовывать лучше то или иное)? А то я тока учусь
Заголовочный файл:
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#pragma once
 
#include "resource.h"
 
using namespace std;
/////////////////////////////////////////////
class DictCell
{
public:
    DictCell(); // Конструктор без параметров
    DictCell(DictCell& iCell); // Конструктор копирования
    DictCell(string, unsigned int); // Конструктор с параметрами
    ~DictCell(); // Деструктор
    DictCell& operator=(const DictCell& iCell)
    {
        //if (this == iCell) //Пока не перегрузил оператор ==
        //{
        //  return *this;
        //}
        m_ID = iCell.m_ID;
        m_nWords = iCell.m_nWords;
        m_sContent = iCell.m_sContent;
        return *this;
    }
    const void GetID(unsigned int&); // Получение ID ячейки
    unsigned int GetID();
    const void GetNWords(unsigned int&); // Получение количества слов в ячейке
    unsigned int GetNWords();
    const void GetContent(string&); // Получение содержания ячейки
    string GetContent();
    void Concat(const DictCell&); // Объединение ячеек
 
private:
    static unsigned int s_CellCount; // Счетчик количества ячеек
    unsigned int m_ID; // ID ячейки
    string m_sContent; // Содержание ячейки
    unsigned int m_nWords; // Количество слов в ячейке
    
 
};
unsigned int DictCell::s_CellCount = 0;
DictCell::DictCell() : m_ID(++s_CellCount), m_sContent("\0"), m_nWords(0)
{
}
DictCell::DictCell(string iContent, unsigned int iWords) : m_ID(++s_CellCount), m_sContent(iContent), m_nWords(iWords)
{
}
DictCell::DictCell(DictCell& iCell)
{
    m_ID = iCell.GetID();
    m_sContent = iCell.GetContent();
    m_nWords = iCell.GetNWords();
}
DictCell::~DictCell()
{
}
const void DictCell::GetID(unsigned int& iID)
{
    iID=m_ID;
}
unsigned int DictCell::GetID()
{
    return m_ID;
}
const void DictCell::GetContent(string& iContent)
{
    iContent = m_sContent;
}
string DictCell::GetContent()
{
    return m_sContent;
}
const void DictCell::GetNWords(unsigned int& iWords)
{
    iWords = m_nWords;
}
unsigned int DictCell::GetNWords()
{
    return m_nWords;
    //return 157;
}
void DictCell::Concat(const DictCell& iCell)
{
    m_sContent += iCell.m_sContent;
    m_nWords += iCell.m_nWords;
    iCell.~DictCell();
}
///////////////////////////////////////////
class Dictionary
{
public:
    Dictionary(); // Конструктор без параметров
    Dictionary(string, string); // Конструктор без параметров
    ~Dictionary(); // Деструктор
    void Concat(const Dictionary&); // Объединение словарей
    void PutData(string, string);
    void CellAdd(DictCell& iCell);
    void CellRemove(unsigned int);
    void PrintData();
 
private:
    string m_sName; // Название словаря
    string m_sType; // Тип словаря
    unsigned int m_nWords; // Количество слов в словаре
    unsigned int m_nCells; // Количество ячеек в словаре
    CArray <DictCell, DictCell> aCell; // Массив ячеек
};
 
Dictionary::Dictionary() : m_sName("\0"), m_sType("\0"), m_nWords(0), m_nCells(0)
{
}
Dictionary::Dictionary(string iName, string iType) : m_sName(iName), m_sType(iType), m_nWords(0), m_nCells(0)
{
}
Dictionary::~Dictionary()
{
}
void Dictionary::PutData(string iName, string iType)
{
    m_sName = iName;
    m_sType = iType;
}
void Dictionary::CellRemove(unsigned int i)
{
    m_nWords -= aCell[i].GetNWords();
    m_nCells--;
    aCell.RemoveAt(i);
}
void Dictionary::CellAdd(DictCell& iCell)
{
    m_nWords += iCell.GetNWords();
    m_nCells++;
    aCell.Add(iCell);
}
void Dictionary::Concat(const Dictionary& iDict)
{
    m_nWords += iDict.m_nWords;
    m_nCells += iDict.m_nCells;
    aCell.Append(iDict.aCell);
}
void Dictionary::PrintData()
{
    cout << "Name= " << setw(15) << m_sName 
        << ", Type= " << setw(10) << m_sType 
        << ", nWords= " << setw(5) << m_nWords 
        << ", nCells= " << setw(5) << m_nCells
        << endl;
}
Добавлено через 16 минут
Больше всего мне интересно где правильнее (где принято) определять методы, операторы, конструкторы. Внутри класса или вне?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru