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

Собственный динамический массив (аналог std::vector) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Структура: стек из произвольного количества элементов http://www.cyberforum.ru/cpp-beginners/thread775728.html
Составьте программу, которая создает стек из произвольного количества элементов. Информационная часть динамического элемента должна состоять из двух целых чисел. Организуйте обработку каждого элемента: печать целых чисел из информационной части и суммы их квадратов.
C++ Ряд тейлора Вобщем вот программа. #include <iostream.h> #include <math.h> #include <iomanip.h> #include <conio.h> int main () { const int max = 500; http://www.cyberforum.ru/cpp-beginners/thread775710.html
Очередь. Организуйте обработку каждого элемента: печать строк из информационной части и их первых символов C++
Составьте программу, которая создает очередь из произвольного количества элементов. Информационная часть динамического элемента должна состоять из двух строк. Организуйте обработку каждого элемента: печать строк из информационной части и их первых символов.
C++ Проверить, образует ли элементы данного массива арифметическую прогрессию
Дан массив целых чисел. Проверить, образует ли элементы данного массива арифметическую прогрессию.
C++ Скобки у конструктора http://www.cyberforum.ru/cpp-beginners/thread775703.html
Задавал подобный вопрос, однако следующий код все равно ставит меня в тупик. Почему такой код нормально компилируется и работает: BFGlobalServiceProxy pr; int result = pr.login(login, loginResp); а такой выдает ошибку при компиляции: BFGlobalServiceProxy pr(); int result = pr.login(login, loginResp); ошибка в qtcreator
C++ Не инкрементируется переменная Привет. В общем так: в main() создается определенное юзером количество ботов Bot *ptrBots = new Bot ; Каждому боту я даю определенное имя. Здесь i - это закрытый static int элемент класса. Инициализируется нулем. nameForBot - это закрытый static string элемент класса Bot::Bot() { подробнее

Показать сообщение отдельно
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
30.01.2013, 23:51     Собственный динамический массив (аналог std::vector)
Вот возникла идея написать что-то на подобии вектора, но возникла проблема что не так с kallocSize? Почему компилятор ее не пропускает? А когда я ее заменю просто числом то все в порядке.
------ Построение начато: проект: MyVector, Конфигурация: Debug Win32 ------
main.cpp
array.cpp
Создание кода...
main.obj : error LNK2005: "protected: static int const Array::kallocSize" (?kallocSize@Array@@1HB) уже определен в array.obj
c:\documents and settings\admin\мои документы\visual studio 2010\Projects\MyVector\Debug\MyVector.exe : fatal error LNK1169: обнаружен многократно определенный символ - один или более
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// array.h
#ifndef array_h
#define array_h
 
class Array
{
public:
    Array();
    ~Array();
    int &operator[](int);
protected:
    static const int kallocSize = 4;
    void resize(int);
    int* mElems;
    int mSize;
private:
    Array(const Array&);
    Array& operator=(const Array&);
};
 
#endif
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
// array.cpp
#include "array.h"
 
const int Array::kallocSize;
 
Array::Array()
{
    mSize = kallocSize;
    mElems = new int[mSize];
}
 
Array::~Array()
{
    delete [] mElems;
}
 
void Array::resize(int newSize)
{
    int* newElems = new int[newSize];
 
    for(int i=0;i<newSize;i++)
        newElems[i] = mElems[i];
 
    mSize = newSize;
    delete [] mElems;
    mElems = newElems;
}
 
int& Array::operator[](int x)
{
    if(x >= mSize)
        resize(x+kallocSize);
    return (mElems[x]);
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// main.cpp
#include <iostream>
#include "array.h"
 
using namespace std;
 
int main()
{
    Array arr;
    for(int i=0;i<5;i++)
        arr[i]=i+1;
 
    for(int i=0;i<5;i++)
        cout<<arr[i]<<" ";
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru