Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Fehlender Typspezifizierer

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
28.10.2007, 15:13 Uhr
~Patrick S.
Gast


hi

ich habs noch immer nicht lösen können, was könnte die Ursache für die Fehlermeldung sein?

Die Klassen sind in mehrere Dateien aufgeteilt:


C++:
// Klasse FOO:

// foo.h

class bar
{
public:
// funktionen ..
void set(int);
private:
friend class bar;
int any;
};

//foo.cpp

#include "foo.h"
#include < ALLE ANDEREN >

void foo::set(int some)
{
   any = some;
}




C++:
// Klasse BAR:

// bar.h

class bar
{
public:
void ausgabe();
private:
foo inst;
};

//bar.cpp

#include "bar.h"
#include < ALLE ANDEREN >

void bar::ausgabe()
{
std::cout << inst.any << std::endl;
}






C++:
// MAIN.CPP:

#include "bar.h"
#include "foo.h"
#include <ALLE ANDEREN, zbsp. iostream,..>

int main()
{
foo haha;
haha.set(10);

bar test;
test.ausgabe();

return 0;
}



und Fehler ist:


Zitat:
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.


ich hoffe, ihr könnt mir bitte helfen

Mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.10.2007, 15:23 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


in BAR kennt er FOO nicht, mal davon abgesehen das in FOO BAR steht


haha schneller :P
--
class God : public ChuckNorris { };

Dieser Post wurde am 28.10.2007 um 15:42 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.10.2007, 15:23 Uhr
Blubber2063



In der Klasse bar fehlt der Include von foo.h, sonst kennt er dort den Typ foo nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.10.2007, 15:46 Uhr
~Patrick S.
Gast



Zitat:
in BAR kennt er FOO nicht, mal davon abgesehen das in FOO BAR steht



Natürlich sollte in Foo.h die Klasse foo heissen, hab mich nur verschrieben



Zitat:
In der Klasse bar fehlt der Include von foo.h, sonst kennt er dort den Typ foo nicht.






C++:
// Klasse FOO:

// foo.h
class bar; // Damits bekannt wird ..

class foo
{
public:
// funktionen ..
void set(int);
private:
friend class bar;
int any;
};

//foo.cpp

#include "foo.h"
#include "bar.h" // Das ergibt mehrere Fehler(Siehe unten)
#include < ALLE ANDEREN >

void foo::set(int some)
{
   any = some;
}




C++:
// Klasse BAR:

// bar.h

class bar
{
public:
void ausgabe();
private:
foo inst; // HIER FEHLER NR. 1
};

//bar.cpp

#include "bar.h"
#include < ALLE ANDEREN >

void bar::ausgabe()
{
std::cout << inst.any << std::endl;
}






C++:
// MAIN.CPP:

#include "bar.h"
#include "foo.h"
#include <ALLE ANDEREN, zbsp. iostream,..>

int main()
{
foo haha;
haha.set(10);

bar test;
test.ausgabe();

return 0;
}



und der Fehler lautet:


Zitat:
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int"
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int"



und der Fehler, wenn ich bar.h includiere in foo.cpp, dann kommen folgende:


Zitat:

error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'inst'
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int"
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int"
error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'inst'
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int"
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int"



Ich danke schon im voraus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.10.2007, 16:17 Uhr
xXx
Devil


Soo ... das ganze mal mit Include-Guard usw. versehen ... dann mal template draus machen, damit wir nicht abhängig sind


C++:
// foo.h
#if !defined (FOO_H__INCLUDED)
#define FOO_H__INCLUDED

#if (_MSC_VER >= 1300)
#pragma once
#endif // (_MSC_VER >= 1300)

#include <iostream>

class bar;

template<typename T>
class foo
{
friend class bar;
public:
    foo(T const& value) : m_value(value) {}
    foo() {}

public:
    void set(T const& value) { m_value = value; }
    T const& get() const { return m_value; }

public:
    friend std::ostream& operator<<(std::ostream& out, foo const& data) { out << data.m_value; return out; }

private:
    T    m_value;
};

#endif // FOO_H__INCLUDED
...

C++:
// bar.h
#if !defined (BAR_H__INCLUDED)
#define BAR_H__INCLUDED

#if (_MSC_VER >= 1300)
#pragma once
#endif // (_MSC_VER >= 1300)

#include "foo.h"
#include <iostream>

class bar
{
public:
    bar() : m_foo(15) {}    
public:
    friend std::ostream& operator<< (std::ostream& out, bar const& data) { out << data.m_foo; return out; }

private:
    foo<int>    m_foo;
};

#endif // BAR_H__INCLUDED
...

C++:
#include "bar.h"
#include <iostream>

int main()
{
    std::cout << bar() << std::endl;    
}
...

Dieser Post wurde am 28.10.2007 um 16:55 Uhr von xXx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.10.2007, 20:04 Uhr
~Patrick S.
Gast


hi

könntest du es bitte auf meine Art und Weise machen, denn mit Templates hab ich mich noch nicht beschäftigt?

Mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.10.2007, 20:31 Uhr
0xdeadbeef
Gott
(Operator)


Das Wichtige sind die Include-Guards, und in bar.h musst du foo.h #includen, sonst kennt der Compiler in der betreffenden Üebrsetzungseinheit das Symbol foo nicht, und du kriegst deinen Fehler. Der template-Kram ist erstmal völlig überflüssig.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 28.10.2007 um 20:31 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
29.10.2007, 20:50 Uhr
~Patrick S.
Gast


Also ich hab diese in den Dateien stehen, schon lange ... hab sie nur vergessen hier reinzuschreiben .. bzw. reinzukopieren.

kann mir jemand bitte noch anders helfen?

mfg
 
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: