Так что я работаю над проблемой, и это дается информация, но по какой-то причине она не будет компилироваться. Я скопировал точно из учебника, и я получаю ошибки в файле реализации, такие как const (квалификатор типа не разрешен для функции, не являющейся членом) и значение (член недоступен) Я предполагаю, что это просто опечатка или что-то в верхней части, но я не могу понять это.
// SPECIFICATION FILE ( itemtype.h )
const int MAX_ITEM = 5 ;
enum RelationType { LESS, EQUAL, GREATER } ;
class ItemType // declares class data type
{
public : // 3 public member functions
RelationType ComparedTo ( ItemType ) const;
void Print() const;
void Initialize(int number);
private:
int value;
};
// IMPLEMENTATION FILE ( itemtype.cpp )
// Implementation depends on the data type of value.
#include “itemtype.h”
#include <iostream>
using namespace std;
RelationType ComparedTo ( ItemType otherItem ) const
{
if ( value < otherItem.value )
return LESS ;
else if ( value > otherItem.value )
return GREATER ;
else
return EQUAL ;
}
void Print ( ) const
{ cout << value << endl ;
}
void Initialize ( int number )
{
value = number ;
}
Есть две возможности: либо ваша книга неверна, либо вы не скопировали код именно так.
Когда функции-члены определены вне определения класса, вам нужно сообщить компилятору, к какому классу они принадлежат:
RelationType ItemType::ComparedTo(ItemType otherItem) const
{
// ...
}
// ...
void ItemType::Print() const
{
// ...
}
и так далее.
(Между классом, файлом заголовка и реализацией нет никакой точки зрения с точки зрения C ++.)
Других решений пока нет …