I have created a project with about 7 files including 3 header files and 3 implementation files. I am getting a multiple definition error when compiling for one specific file of class. I have checked that if there is more than one allocation of storage for identifiers, this error arises. But I don’t see where the problem lies. Any suggestions?

#ifndef ItemType_hpp     // I was told to include this directives
#define ItemType_hpp
#include <fstream>
#include <iostream>
#include "StrTypeAugmented.h"
const int MAX_ITEMS = 25; 
enum RelationType {LESS, EQUAL, GREATER};
class HouseType
         void GetFromFile(std::ifstream&); 
         void WriteToFile(std::ofstream&); 
         void GetFromUser(); 
         void PrintHouseToScreen(); 
         void GetNameFromUser(); 
         void PrintNameToScreen(); 
         RelationType ComparedTo(HouseType); 
         StrType lastName; 
         StrType firstName; 
         StrType address; 
         float price; 
         int squareFeet; 
         int bedRooms; 
// ItemType.cpp
#include "ItemType.h"
typedef HouseType ItemType;
using namespace std;
// ItemType.cpp is the implementation file for data for the real 
//  estate manipulation program.
void HouseType::GetFromFile(std::ifstream& file) 
  lastName.GetStringFile(true, NOT_NEW, file);
  firstName.GetStringFile(true, NOT_NEW, file);
  address.GetStringFile(true, NOT_NEW, file);
  file >> price >> squareFeet >> bedRooms;
void HouseType::WriteToFile(std::ofstream& file)
  lastName.PrintToFile( false, file);
  firstName.PrintToFile(true, file);
  address.PrintToFile(true, file);
  file << endl << price << endl;
  file << squareFeet << endl;
  file << bedRooms << endl;
void HouseType::GetFromUser() 
  cout << "Enter last name; press return." << endl;
  lastName.GetString(true, NOT_NEW);
  cout << "Enter first name; press return." << endl;
  firstName.GetString(true, NOT_NEW);
  cout << "Enter address; press return." << endl;
  address.GetString(true, NOT_NEW);
  cout << "Enter price, square feet, number of bedrooms;"
       << " press return." << endl;
  cin >> price >> squareFeet >> bedRooms;
void HouseType::PrintHouseToScreen()
  firstName.PrintToScreen( false);
  cout << " ";
  lastName.PrintToScreen( false);
  cout << endl << "Price: " << price << endl;
  cout << "Square Feet: " << squareFeet << endl;
  cout << "Bedrooms: " << bedRooms << endl;
void HouseType::GetNameFromUser() 
  cout << "Enter last name;  press return." << endl;
  lastName.GetString(true, NOT_NEW);
  cout << "Enter first name;  press return." << endl;
  firstName.GetString(true, NOT_NEW);
void HouseType::PrintNameToScreen()
  firstName.PrintToScreen( false);
  cout << " ";
  lastName.PrintToScreen( false);
  cout << endl;
RelationType HouseType::ComparedTo(HouseType house)
  if (lastName < house.lastName)
    return LESS;
  else if (house.lastName < lastName)
    return GREATER;
  else if (firstName < house.firstName)
    return LESS;
  else if (house.firstName < firstName)
    return GREATER;
  else return EQUAL;

multiple definition of `HouseType::GetFromFile(std::basic_ifstream<char, std::char_traits<char> >&)'
first defined here
multiple definition of `HouseType::WriteToFile(std::basic_ofstream<char, std::char_traits<char> >&)'

9 Years
Discussion Span
Last Post by thekashyap

You haven't posted the code that's causing this error..
Post the XXX.cpp if your error message says first defined in XXX.o..
Of course first check if you havn't #included ItemType.cpp..

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.