Я работаю над тем, что будет принимать входной файл строк и организовывать их на основе пользовательского входного файла.Верхняя часть входного файла - это то, как он организован, а остальная часть - это отформатированная информация, каждая из которых находится в отдельной строке для ввода в объект. Каждый отдельный фрагмент информации, который необходим для моего объекта, разделен на 5 последовательных строк.
Моя проблема заключается в функции печати, которая вызывается в массиве указателей объектов и передается впредпочтение сортировки пользователя при вызове.Пока что я обнаружил, что я не могу даже вызвать функцию объекта.Я пробовал несколько разных решений, таких как создание совершенно нового объекта (Object myObject ();) и вызов той же функции печати, но это тоже не сработает.Есть ли способ вызвать функцию в массиве указателей на объекты, которые я создал, и передать эту переменную предпочтения? Я попытался добавить конструктор по умолчанию и вызвать функцию для этого, но когда я сделал это, два теста в object.cpp, которые отслеживают переменные при вызове print, показывают, что переменные передаются как NULL, возможно.
main.cpp
#include <iostream>
#include <string>
#include "object.h"
int main()
{
Object **ptr = new Object*[5];//Create array of object pointers
string firstLine, secondLine, thirdLine, userPreference;
float fourthLine;
int fifthLine;
string currentLine;
int lineCounter = 0;
int arrayCounter = 0;
getline(cin, userPreference);//Preference on sorting method
while(getline(cin, currentLine)) {//Main loop
switch(lineCounter) {
case(1):
firstLine = currentLine;
lineCounter++;
break;
case(2):
secondLine = currentLine;
lineCounter++;
break;
case(3):
thirdLine = currentLine;
lineCounter++;
break;
case(4):
fourthLine = stof(currentLine);//Get float value of currentLine and set fourthLine equal to it
lineCounter++;
break;
case(5):
fifthLine = stoi(currentLine);//Get integer value of currentLine and set fithLine equal to it
ptr[arrayCounter] = new Object(firstLine, secondLine, thirdLine, fourthLine, fifthLine);
arrayCounter++;//Step to next element now that the current element is filled
lineCounter = 0;//Reset lineCounter
cout << "case 5 test" << endl;
break;
}//End switch
}
ptr -> print(userPreference);
for(int i = 0; i < arrayCounter; i++) {//Delete everything
cout << "Test";
}
}
object.cpp
#include "object.h"
#include <iostream>
using namespace std;
Object::Object(string title, string URL, string comment, float length, int rating) {
vidTitle = title;
vidURL = URL;
vidComment = comment;
vidLength = length;
vidRating = rating;
}
void Object::print(string preference) {
vidPreference = preference;
cout << vidPreference;
cout << preference;
if(vidPreference == "rating") {
//Rating sort
//Is the array passed through correctly? If so, can I climb through like I do to assign it in main?
}
if(vidPreference == "length") {
//Length sort
}
if(vidPreference == "title") {
//Title sort
}
else {
cout << preference << " is not a legal sorting method, giving up." << endl;
}
}
object.h
#ifndef OBJECT_H
#define OBJECT_H
#include <string>
using namespace std;
class Object
{
public:
Object(string title, string URL, string comment, float length, int rating);
void print(string preference);
private:
string vidTitle, vidURL, vidComment, vidPreference;
float vidLength;
int vidRating;
};
#endif