Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Multiple Definitions ABER WO

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.03.2006, 20:49 Uhr
Karldin Shinowa
Professional Noob


so er zeigt mir hier multiple definitions vom Konstruktor und der Funktion Clear an(Linker error)



C++:
//CRoom.h
#ifndef CRoom_h
#define CRoom_h

#include<string>
#include<fstream>

class CRoom
{
   private:
      string strName;
      string strDescription;
      int iViewthings;
      string *strViewthings;
      string strNorth;
      string strSouth;
      string strEast;
      string strWest;
    
  
   public:
      CRoom();
      ~CRoom()
      {
         Clear();
      }
      void Clear();
      void Help();
      
      void SetName(string strName);
      void SetDescription(string strDescription);
      void SetViewthing(ifstream&File);
      void SetiViewthings(int iViewthings);
      void SetNorth(string strNorth);
      void SetSouth(string strSouth);
      void SetEast (string strEast);
      void SetWest (string strWest);
    
      string GetName();
      string GetDescription();
      string GetViewthings(int index);
      int    GetiViewthings();
      string GetNorth();
      string GetSouth();
      string GetEast ();
      string GetWest ();
      //string GetAction(int index);
      //int    GetiActions();
};

CRoom:: CRoom()
{
//Zeiger auf 0
   this->strViewthings=0;
  
}

void CRoom::Clear()
{
//Dynamisch erzeugten Speicherplatz löschen,Zeiger 0, anderes auf leer setzen
   this->strName="";
   this->strDescription="";
   delete[] this->strViewthings;
   this->strViewthings=0;
   this->strNorth="";
   this->strSouth="";
   this->strEast="";
   this->strWest="";
  
}
#endif




C++:
//Setmethoden.cpp

#include"CRoom.h"

void CRoom::SetName(string strName)
{
   this->strName=strName;
}

void CRoom::SetDescription(string strDescription)
{
   this->strDescription=strDescription;
}

void CRoom::SetViewthing(ifstream&File)
{
   string strWord;
   this->strViewthings=new string[this->GetiViewthings()];

   for(int i=0;i<this->GetiViewthings();i++)
   {
      File>>strWord;
      File>>strViewthings[i];
   }
}


void CRoom::SetiViewthings(int iViewthings)
{
   this->iViewthings=iViewthings;
}

void CRoom::SetNorth(string strNorth)
{
   this->strNorth=strNorth;
}

void CRoom::SetSouth(string strSouth)
{
   this->strSouth=strSouth;
}

void CRoom::SetEast (string strEast)
{
   this->strEast=strEast;
}

void CRoom::SetWest (string strWest)
{
   this->strWest=strWest;
}




C++:
//Getmethoden.cpp
#include"CRoom.h"

string CRoom::GetName()
{
   return this->strName;
}

string CRoom::GetDescription()
{
   return this->strDescription;
}

string CRoom::GetViewthings(int index)
{
   index--;
   if(index<this->GetiViewthings())
   {
      return this->strViewthings[index];
   }
   return "";
}

int CRoom::GetiViewthings()
{
   return this->iViewthings;
}

string CRoom::GetNorth()
{
   return this->strNorth;
}

string CRoom::GetSouth()
{
   return this->strSouth;
}

string CRoom::GetEast ()
{
   return this->strEast;
}

string CRoom::GetWest ()
{
   return this->strWest;
}


--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.

Dieser Post wurde am 22.03.2006 um 20:52 Uhr von Karldin Shinowa editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.03.2006, 21:50 Uhr
virtual
Sexiest Bit alive
(Operator)


CDROM::Clear musss auch in einer CPP Datei wandern
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.03.2006, 22:06 Uhr
Karldin Shinowa
Professional Noob


ändert nix....
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.03.2006, 22:18 Uhr
kronos
Quotenfisch
(Operator)


Doch, doch...
Wenn du in mehreren c++ files einen header mit Definitionen einbindest, kommen diese im Objekt-Code auch mehrmals vor, in deinem Falls jeweils in den Objekten von GetMethods und SetMethods. Die kannste dann nicht mehr zusammenlinken...
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.03.2006, 08:55 Uhr
ao

(Operator)



Zitat von Karldin Shinowa:
ändert nix....

Wo wird das alles zusammengebaut? Zeig mal den main-Teil.
Nicht dass da irgendwo #include "SetMethoden.cpp" steht ...

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
23.03.2006, 15:34 Uhr
Karldin Shinowa
Professional Noob



C++:
#include<iostream>
#include<fstream>
#include<stdio.h>
#include<string>
#include"CRoom.h"
string GetNextWord(ifstream&File)
{
   string str;
   File>>str;
   return str;
}
void ReadRoom(ifstream &File,string strRoomname,CRoom &Room);
void Check(string str,ifstream &File,CRoom &Room);

using namespace std;

int main()
{
   ifstream File("World.txt",ios::nocreate);
   CRoom Room;
   ReadRoom(File,"Raum",Room);
   cout<<Room.GetDescription();
   getchar();
}



void ReadRoom(ifstream&File,string strRoomname,CRoom &Room)
{  
   File.seekg(0,ios::beg);                        
   File.clear();

   string strWord;
   Room.SetName(strRoomname);
   strRoomname="<"+strRoomname+">";
   while(strWord!=strRoomname)
   {
    getline(File,strWord);
   }
   while(true)
   {
      strWord=GetNextWord(File);
      if(strWord!="#end#")
      {
         break;
      }
      Check(strWord,File,Room);
   }
}

void Check(string str,ifstream &File,CRoom &Room)
{
   string strTemp;
   int iTemp;
   if(str=="<description>")
   {
      getline(File,strTemp,'*');
      Room.SetDescription(strTemp);
   }
   else if(str=="<viewable>")
   {
      File>>iTemp;
      Room.SetiViewthings(iTemp);
      Room.SetViewthing(File);
   }
   else if(str=="<north>")
   {
      getline(File,strTemp,'*');
      Room.SetNorth(strTemp);
   }
   else if(str=="<south>")
   {
      getline(File,strTemp,'*');
      Room.SetSouth(strTemp);
   }
   else if(str=="<east>")
   {
      getline(File,strTemp,'*');
      Room.SetEast(strTemp);
   }
   else if(str=="<west>")
   {
      getline(File,strTemp,'*');
      Room.SetWest(strTemp);
   }
  
}


--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: