написал на взгляд ОБСОЛЮТНО рабочий код, но он не работает(
помогите!
main.cpp:
#include <iostream>
#include <string>
#include "classes/Dinamic/Dinamic.h"
#include "classes/Person/Person.h"
using namespace std;
#define RETURN return 0
int main()
{
setlocale(LC_ALL,"ru");
cin.exceptions(ios::failbit | ios::badbit);
Dinamic<string> TEXTS_;
TEXTS_.push_back("привет, у тебя есть задача");
TEXTS_.push_back("реши ее и получи награду!");
Person l("crocodile");
l.Speak("Hello");
RETURN;
}
Dinamic.cpp:
#include <iostream>
#include <string>
#include "Dinamic.h"
using namespace std;
//Constructor
template<class T>Dinamic<T>::Dinamic()
{
size_=0;
__Array = new T[size_]; //create empty array
}
//Destructor
template<class T>Dinamic<T>::~Dinamic()
{
delete[] __Array; //clean memory
}
//method push back
template<class T>void Dinamic<T>::push_back(const T& value)
{
T* array_buffer = new T[(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
template<class T>void Dinamic<T>::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
template<class T>void Dinamic<T>::pop_back()
{
size_--;
T* array_buffer = new T[this->size_];
for(int i = 0; i < this->size_; i++)
{
array_buffer[i] = __Array[i];
}
delete[] __Array;
__Array = array_buffer;
}
//return element by index
template<class T>T& Dinamic<T>::ElementByIndex(const int& index)
{
return __Array[index];
}
//Get size
template<class T>int& Dinamic<T>::size()
{
return size_;
}
//is empty?
template<class T>bool Dinamic<T>::empty()
{
if(this->size_ > 0) {
return false;
}
else {
return true;
}
}
//resize array
template<class T>void Dinamic<T>::resize(const int& New_size,const T& values)
{
T* array_buffer = new T[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;
}
Dinamic.h:
#ifndef _IS_GUARD_
#define _IS_GUARD_
#include <string>
#include <iostream>
using namespace std;
template<class T>
class Dinamic
{
public:
Dinamic();
~Dinamic();
void push_back(const T& value);
void PrintAllElementInArray(const string& separation="\n");
void pop_back();
T& ElementByIndex(const int& index);
int& size();
bool empty();
void resize(const int& New_size,const T& values=0);
private:
int size_; //size array
T* __Array; //main array
};
#endif // _IS_GUARD_
Person.cpp:
#include <iostream>
#include <string>
#include "../Dinamic/Dinamic.h"
#include "Person.h"
using namespace std;
Person::Person(string name)
{
this->name=name;
}
void Person::Speak(const string& text)
{
cout<<name<<": "<<text<<endl;
}
template<class T>void Person::give_quest(
Dinamic<string>* texts,
const string& quest,
const T& answer
)
{
for(int i = 0; i < texts->size(); i++)
{
cout<<texts->ElementByIndex(i)<<endl;
}
cout<<quest<<endl;
string buffer;
cin>>buffer;
if(buffer==to_string(answer))
{
cout<<"Верно!"<<endl;
}
else
{
cout<<"Неверно!"<<endl;
}
}
Person.h:
#ifndef _IS_GUARD_PENSON_
#define _IS_GUARD_PERSON_
#include <iostream>
#include <string>
#include "../Dinamic/Dinamic.h"
using namespace std;
class Person
{
public:
//Constructor
Person(string);
void Speak(const string&);
template<class T>void give_quest(Dinamic<string>*, const string&, const T&);
private:
string name;
};
#endif //_IS_GUARD_PERSON_
Компилирую через g++ такой командой:
clear;
g++ main.cpp classes/Dinamic/Dinamic.cpp classes/Person/Person.cpp -o Programm;
./Programm
Структура проекта соответствует!
сама ошибка:
У вас код, описывающий работу шаблона, должен находится в одной единице трансляции. Другими словами вам необходимо всю реализацию методов и т.д. перенести в соответствующие .h
файлы.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пишу приложение, использую qt creator в качестве ide, и понадобилось мне использовать SFML, но возникла проблема: вpro файл добавил код для подключения...
поставил себе задачу при клике на картинку like менять ее на другую в посте, чтобы пользователь понимал, что, что-либо поменялось в initialState у posts добавил...
У меня есть текстовый файл с множеством объектов с одинаковыми именами и множеством координат, как его распарсить в jsonКак правильно его распарсить?...