class c++ многофайловый проект

105
17 октября 2021, 16:40

не могу скомпилировать многофайловый проект

main.cpp:

#include <iostream>
#include <string>
#include <fstream>
#include "Dinamic.h"
using namespace std;
#define RETURN return 0
int main()
{
    setlocale(LC_ALL,"ru");
    cin.exceptions(ios::failbit | ios::badbit);
    Dinamic arr;
    arr.push_back(9);
    arr.push_back(74);
    arr.push_back(23);
    arr.push_back(14);
    arr.PrintAllElementInArray("\t");
    arr.resize(20);
    cout<<endl<<endl;
    arr.PrintAllElementInArray();
    RETURN;
}

Dinamic.cpp:

#include <iostream>
#include <string>
#include "Dinamic.h"
using namespace std;
class Dinamic
{
public:
        //Constructor
    Dinamic()
    {
        size_=0;
        __Array = new int[size_]; //create empty array
    }
        //Destructor
    ~Dinamic()
    {
        delete[] __Array; //clean memory
    }
        //method push back
    void push_back(const int& value)
    {
        int* array_buffer = new int[(this->size_)+1]; //create new array
        for(int i = 0; i < this->size_; i++)
        {
            array_buffer[i] = __Array[i];
        }
        array_buffer[this->size_] = value; //add new element
        size_++;
        delete[] __Array; //clean old array
        __Array = array_buffer; //update pointer
    }
        //method Print all array
    void PrintAllElementInArray(const string& separation)
    {
        for(int i = 0; i < this->size_; i++)
        {
            if(i==(this->size_-1)) //if final iteration
            {
                cout<<__Array[i]<<endl;
                break;
            }
            cout<<__Array[i]<<separation;
        }
    }
        //method pop back
    void pop_back()
    {
        size_--;
        int* array_buffer = new int[this->size_];
        for(int i = 0; i < this->size_; i++)
        {
            array_buffer[i] = __Array[i];
        }
        delete[] __Array;
        __Array = array_buffer;
    }
        //return element by index
    int& ElementByIndex(const int& index)
    {
        return __Array[index];
    }
        //Get size
    int& size()
    {
        return size_;
    }
        //is empty?
    bool empty()
    {
        if(this->size_ > 0) {
            return false;
        }
        else {
            return true;
        }
    }
        //resize array
    void resize(const int& New_size,const int& values)
    {
        int* array_buffer = new int[New_size];
        for(int i = 0; i < this->size_; i++)
        {
            array_buffer[i]=__Array[i];
        }
        for(int i = (this->size_); i<New_size;i++)
        {
            array_buffer[i] = values;
        }
        this->size_ = New_size;
        delete[] __Array;
        __Array = array_buffer;
    }
private:
    int size_; //size array
    int* __Array; //main array
};

Dinamic.h:

#ifndef _IS_GUARD_
#define _IS_GUARD_
#include <iostream>
#include <string>
using namespace std;
class Dinamic
{
public:
    Dinamic();
    ~Dinamic();
    void push_back(const int& value);
    void PrintAllElementInArray(const string& separation="\n");
    void pop_back();
    int& ElementByIndex(const int& index);
    int size();
    bool empty();
    void resize(const int& New_size,const int& values=0);
private:
    int size_;
    int* __Array;
};
#endif //   _IS_GUARD_

run.sh(файл для компиляции и запуска программы):

clear;
g++ main.cpp Dinamic.cpp -o Programm;
./Programm

Ошибка:

Answer 1

В .cpp файле нужно только написать реализацию методов класса примерно так:

//Constructor
Dinamic::Dinamic()    {
    size_=0;
    __Array = new int[size_]; //create empty array
}

...

//Get size
int& Dinamic::size()    {
    return size_;    }

Заголовок class Dinamic { с объявлениями переменных класса объявлять второй раз не нужно.

READ ALSO
setInterval ускоряется [дубликат]

setInterval ускоряется [дубликат]

Когда нажимаю на кнопку несколько раз, выполняет за 1 секунду по несколько разВ чем проблема?

97
Каким инструментом можно объединять в блоки CSS, JS и HTML?

Каким инструментом можно объединять в блоки CSS, JS и HTML?

Нужен инструмент, способный создавать сайт по методологии БЭМ, а для этого нужно как-то объединять отдельные независимые блоки html кода, к которому...

111
Добавить/удалить из LocalStorage

Добавить/удалить из LocalStorage

Есть витрина товара, имеется кнопка Добавить в корзину и при нажатии на неё товар добавляется в LocalStorage и отображается в корзине․

231