Реализация многофайлового класса Cpp

Я пытаюсь реализовать многофайловый класс, но я ОЧЕНЬ запутался в «как это сделать».

Я объявил этот класс в главном файле, и он работает, но сейчас я пытаюсь сделать его аппартным из основного файла.

Я получил эти сомнения:

1-) В моем классе есть конструктор, поэтому, когда я объявляю его в файле .cpp, я объявляю конструктор внутри конструктора ???? звучит запутанно ..

2-) Если функция в файле .cpp использует глобальную переменную / вектор, объявленный в основном файле, мне нужно объявить это с помощью Extern ??

3-) Нужно ли мне # включать все необходимые библиотеки в функции на .cpp ??

Я не могу сказать ошибку, которую я получаю, потому что каждый раз, когда она другая, иногда я получаю ошибку:

error: 'DataReading' has not been declared|

Я буду очень благодарен за любую помощь 🙂

Сначала я покажу весь класс, который работал над main, помните о конструкторе (я заменю некоторые коды на «// code code», чтобы сократить его)

class DataReading
{
private:
string word;
string line;
string temp;
public:
DataReading(string wd) : word(wd)
{}
void ReadLineByLine()
{
//code code
}

void searchword()
{
//code code
}
int check_data()
{
if ((Names.size() != (DadosDeEntrada[7].Valor+1)) ||(WellTypes.size() != (DadosDeEntrada[7].Valor+1)) || (Positions.size() != (DadosDeEntrada[7].Valor+1))|| (WellsRadius.size() != (DadosDeEntrada[7].Valor+1))|| (Skins.size() != (DadosDeEntrada[7].Valor+1))|| (ControlTypes.size() != (DadosDeEntrada[7].Valor+1))|| (Pressures.size() != (DadosDeEntrada[7].Valor+1)))
{
//code code
}
}

Итак, я покажу, что я пробовал, сначала файл .h:

#ifndef DATAREADING_H
#define DATAREADING_Hclass DataReading
{
public:
DataReading(std::string wd);
void ReadLineByLine();
void searchword();
int check_data();

private:
std::string word;
std::string line;
std::string temp;
};

#endif // DATAREADING_H

Теперь файл .cpp сокращен:

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <iomanip>
#include <Eigen/Dense>
#define _USE_MATH_DEFINES
#include <math.h>
#include <cmath>

using namespace std;
using namespace Eigen;

extern vector <string> Names;                              // Cria vetores necessários
extern vector <string> WellTypes;
extern vector <string> Positions;
extern vector <string> WellsRadius;
extern vector <string> Skins;
extern vector <string> ControlTypes;
extern vector <string> Pressures;
/*extern struct StructReading                                 //Estrutura para ler os dados do Reservatório
{
string Variavel;
double Valor;
}
extern vector <StructReading> DadosDeEntrada;*/

DataReading::DataReading(string wd)
{
DataReading(string wd) : word(wd)
{}
}

void DataReading::ReadLineByLine()
{
//code code
}

void DataReading::searchword()
{
//code code
}

int DataReading::check_data()
{
if ((Names.size() != (DadosDeEntrada[7].Valor+1)) ||(WellTypes.size() != (DadosDeEntrada[7].Valor+1)) || (Positions.size() != (DadosDeEntrada[7].Valor+1))|| (WellsRadius.size() != (DadosDeEntrada[7].Valor+1))|| (Skins.size() != (DadosDeEntrada[7].Valor+1))|| (ControlTypes.size() != (DadosDeEntrada[7].Valor+1))|| (Pressures.size() != (DadosDeEntrada[7].Valor+1)))
{
//code code
}
}

PS: мне нужно использовать структуру в файле .cpp, но я не знаю, как импортировать это.

1

Решение

datareading.h

#ifndef DATAREADING_H_INCLUDED
#define DATAREADING_H_INCLUDED

#include <string>

class DataReading
{
private:
std::string word;
std::string line;
std::string temp;
public:
DataReading(std::string const & wd);
void ReadLineByLine();
void searchword();
int check_data();
};

#endif /* DATAREADING_H_INCLUDED */

datareading.cpp

#include "datareading.h"
DataReading::DataReading(std::string const & wd)
: word{ wd }
{}

void DataReading::ReadLineByLine()
{
//code code
}

void DataReading::searchword()
{
//code code
}
int DataReading::check_data()
{
//code code
}

main.cpp

#include "datareading.h"
int main()
{
DataReading dr{"foo"};
}

Вы не должны использовать глобальные переменные, хотя.

«PS: мне нужно использовать структуру в файле .cpp, но я не знаю, как импортировать это». Объявите структуру в своем собственном заголовочном файле и включайте ее везде, где вы используете структуру.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]