2016-12-11 18 views
0

ich in meinem "main.cpp" der folgenden Code bekam:C++ Struct Funktion in einem anderen Header gibt "fehlende Typspezifizierer"

#include "rational.h" 

using namespace std; 

typedef struct rational { 
    long long numerator; 
    long long denominator; 
} rational_t; 

Und ich habe einen Header-Datei-namend "rational.h":

#pragma once 


rational add(rational a,rational b) 
{ 
    rational c; 
    c.numerator = a.numerator + b.numerator; 
    c.denominator = a.denominator + b.denominator; 
    return c; 
} 

bekam ich einen Fehler auf der Linie:

rational add(rational a,rational b) 

Es gibt mir den folgenden Fehler-Code: Fehler C4430 Feh Kreditgeber Typspezialisten - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. Übersetzung: Fehler C4430 Fehlender Typ Specifier - Int wird akzeptiert. "default-int" wird von C++ nicht unterstützt.

Ich denke, weil die Funktion meine Struktur nicht richtig erkennt. Kann mir jemand bitte helfen?

Grüße, Nike

+2

Die Strukturdeklaration in der Header-Datei gehen sollte. Entscheiden Sie auch, ob Sie die richtige Sprache c oder C++ wollen. c benötigt 'struct rational', während C++ nicht. –

Antwort

0

Ihr rational.h Kopf die Definition von rational nicht sehen können, aber versuchen, es zu benutzen.

Verschieben typedef struct rational… an die Spitze der rational.h und mit einer Erklärung in main.cpp ersetzen:

#include "rational.h" 

using namespace std; 

rational rational_t; 
0

Sie haben Ihre vollständigen Quellcode für main.cpp und rational.h nicht eingefügt, so das macht es ein wenig schwieriger, richtig zu debuggen. Basierend nur auf das, was Sie gegeben haben:

  1. Ihre Struktur wurde als „rational“ aber du hast typedef verwendet und definiert es als eine neue Art oder eine andere Art und Weise eine „struct rational“ genannt rational_t ​​zu erklären. Ihre Funktion sollte eine rationale_t zurückgeben und rationale_t für beide Parameter akzeptieren.

  2. Sie wollten wahrscheinlich die Struktur rational in rational.h setzen, vor Ihrer Funktionserklärung.

Es ist ziemlich schwer zu bestimmen, ob Sie verwenden C++ wollen oder C von diesem Beispiel-Code zu, also habe ich es geschrieben in C bis Es wird ein Anfang sein für Sie zu lernen.

main.c

#include <stdlib.h> 
#include <stdio.h> 

#include "rational.h" 

int main() 
{ 
    rational_t first; 
    rational_t second; 

    first.numerator = 5; 
    first.denominator = 7; 

    second.numerator = 3; 
    second.denominator = 9; 

    rational_t product = add(first, second); 
    printf("%lld/%lld\n", product.numerator, product.denominator); 

    return 0; 
} 

rational.h

#ifndef RATIONAL_H_ 
#define RATIONAL_H_ 

typedef struct rational { 
    long long numerator; 
    long long denominator; 
} rational_t; 

rational add(rational a,rational b) 
{ 
    rational c; 
    c.numerator = a.numerator + b.numerator; 
    c.denominator = a.denominator + b.denominator; 
    return c; 
} 

#endif // RATIONAL_H_ 
Verwandte Themen