нет подходящего преобразования для приведения в функциональном стиле из int в ItemType - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть домашнее задание, в котором я должен написать несколько методов для связанного списка и проверить с водителем от профессора. Я продолжаю сталкиваться с этой ошибкой: no matching conversion for functional-style cast from 'int' to 'ItemType'

Вот мои файлы для моего класса "Узел" ItemType:

// ItemType.h. 

#include <fstream>
const int MAX_ITEMS = 5;
enum RelationType  {LESS, GREATER, EQUAL};

class ItemType{
public:
ItemType();
RelationType ComparedTo(ItemType) const;
void Print(std::ostream&) const;
void Initialize(int number);
private: int value;
};

И ItemType. cpp

#include <fstream>
#include <iostream>
#include "ItemType.h"

ItemType::ItemType()
{
  value = 0;
}

RelationType ItemType::ComparedTo(ItemType otherItem) const 
{
  if (value < otherItem.value)
    return LESS;
  else if (value > otherItem.value)
    return GREATER;
  else return EQUAL;
}

void ItemType::Initialize(int number) 
{
  value = number;
}

void ItemType::Print(std::ostream& out) const 
// pre:  out has been opened.
// post: value has been sent to the stream out.
{
  out << value;
}

Когда я пытаюсь использовать драйвер профессора, я получаю сообщение об ошибке при инициализации класса ItemType конструктором. Я инициализирую их так: classList.putItem(ItemType(4)) Но я получаю ошибку, указанную выше, я не уверен, где я не прав, вот мой драйвер:

#include "unsorted.h"
using namespace std;

int main() {
    UnsortedType classList;


    classList.PutItem(ItemType(4));
    classList.PutItem(ItemType(5));
    classList.PutItem(ItemType(4));
    classList.PutItem(ItemType(4));
    classList.PutItem(ItemType(8));
    cout << "(original) length: " << classList.GetLength() << endl; classList.ResetList();
    classList.Print();
    classList.ShiftRight();
    cout << "(shifted right) length: " << classList.GetLength() << endl; classList.ResetList();
    classList.Print();
    classList.DeleteItem(ItemType(4));
    cout << "(delete all 4s) length: " << classList.GetLength() << endl; classList.ResetList();
    classList.Print();
    classList.ShiftRight();
    cout << "(shift right) length: " << classList.GetLength() << endl; classList.ResetList();
    classList.Print();
    return 0;
}

1 Ответ

2 голосов
/ 21 февраля 2020

У вас нет конструктора для ItemType, который принимает int. Простым решением было бы определить этот конструктор:

ItemType(int v) : value{v} { }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...