main.cpp|45|error:"int" 和 "double" 之前的预期主表达式

main.cpp|45|error: expected primary-expression before "int" and "double"

本文关键字:表达式 cpp error main int double      更新时间:2023-10-16

文件sys.cpp:

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string>
#include <fstream>
using namespace std;
[...]
struct kmph_in_mps
        {
            int kmph[4];
            int result[4];

            void kmph_erfassen()
            {
                for (size_t i = 0; i < 4; ++i)
                {
                    cin >> kmph[i];
                }
            }
            void mps_erfassen(int kmph, double result)
            {
                result = kmph / 3.6;
            }
            void ergebniss_ausgeben()
            {
                cout << endl << kmph << "Km/h sind " <<result << " Meter pro Sekunden";
            }
        };
[...]

文件main.cpp:

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include "sys.cpp"
#include <fstream>
kmph_in_mps c;

[...]

void Kmph_in_mps()
{
    system("cls");
    cout << "nKm/h: ";
    c.kmph_erfassen();
    c.mps_erfassen(int kmph, double result);
    c.ergebniss_ausgeben();
    t.beenden();
}
[...]

错误:

Error: expected primary-expression before “int”
Error: expected primary-expression before “double”

我是一个正在学习C++的人,我现在不知道该做什么。我在网上和这里寻找答案,但我真的找不到合适的答案。在"in"answers"double"之前,我必须写哪个主要表达式?还是我做的每件事都完全错了,就像一个存在者一样?:P

编辑:我试着返回结果,但似乎是一片空白。

我已经尝试过c.mps_erfassen();,但它也给了我一个错误:错误:调用`kmph_in_mps::mps_erfassen()'|没有匹配的函数

我已经尝试过c.mps_erfassen(kmph, result);,但我没有在此范围内声明它们。它们在另一个文件(sys.cpp)中声明。:S

  c.mps_erfassen(int kmph, double result);
              //^^^remove int and double

调用函数时,不应将类型放在参数之前。

c.mps_erfassen(int kmph, double result);

应该是

c.mps_erfassen(kmph, result);

让函数推导类型:)

编辑回应评论:-

您正在main.cpp中创建struct的对象,而它的定义在sys.cpp中。main.cpp将如何了解您的struct的含义。

为了更好的设计,请将结构的声明放在头文件sys.h中,然后在.cpp文件sys.cpp中定义所需的成员(必须包含sys.h)。然后在main.cpp中使用该结构(同样,您必须在此处包含sys.h)。