0

「main.cpp」に次のコードを入れました。

#include "rational.h"

using namespace std;

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

そして、「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;
}

Line でエラーが発生しました:

rational add(rational  a,rational b)

次のエラー コードが表示されます。 Fehler C4430 Fehlender Typspezifizierer - int wird angenommen. 注記: "default-int" は C++ の nicht unterstützt に由来します。翻訳: エラー C4430 型指定子がありません - int は受け入れられます。「default-int」は C++ ではサポートされていません。

関数が構造体を正しく検出しないためだと思います。誰でも私を助けてくれますか?

こんにちは、ナイキ

4

1 に答える 1

1

main.cpp と Rational.h の完全なソース コードを貼り付けていないため、適切にデバッグするのが少し難しくなります。あなたが与えたもののみに基づいています:

  1. あなたの構造は「合理的」と呼ばれていましたが、typedef を使用して新しい型として定義したか、または「合理的な構造体」を宣言する別の方法として Rational_t と呼ばれました。関数は Rational_t を返し、両方のパラメーターで Rational_t を受け入れる必要があります。

  2. 関数宣言の前に、合理的な構造体を Rational.h に配置するつもりだった可能性があります。

このサンプル コードからも、C++ を使用するか C を使用するかを判断するのはかなり難しいので、C で記述しました。これが学習の出発点になります。

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;
}

合理的な.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_
于 2016-12-11T11:51:51.433 に答える