【问题标题】:C++ Header and Main errorsC++ 标头和主要错误
【发布时间】:2016-11-05 15:12:34
【问题描述】:

这是我第一次尝试将标头集成到我的 C++ 作业中。我们还没有在课堂上介绍它,我只是雄心勃勃。我正在与 Clion 合作。

如果不是很明显,我的目标是在标题中拼出两个函数,一个是从摄氏度转换为华氏度,另一个是相反的。

错误:

/home/dylan/ClionProjects/tempconversion/main.cpp:18:1: error: expected unqualified-id before ‘if’
 if (choice = 1);
 ^
/home/dylan/ClionProjects/tempconversion/main.cpp:19:1: error: expected unqualified-id before ‘{’ token
 {
 ^
/home/dylan/ClionProjects/tempconversion/main.cpp:23:1: error: expected unqualified-id before ‘else’
 else if (choice = 2)
 ^
/home/dylan/ClionProjects/tempconversion/main.cpp:27:1: error: expected unqualified-id before ‘else’
 else if (choice = 0)
 ^
/home/dylan/ClionProjects/tempconversion/main.cpp:31:1: error: expected unqualified-id before ‘else’
 else
 ^

functions.h 头文件:

//
// Created by dylan on 7/3/16.
//

#ifndef TEMPCONVERSION_FUNCTIONS_H
#define TEMPCONVERSION_FUNCTIONS_H
#include <iostream>
int choice;
int degrees;
double degrees2;



double f2c()
{
    std::cout << "Enter the degree count in whole numbers \n";
    std::cin >> degrees;
    degrees2 = (degrees-32)/1.8;
    std::cout << degrees2;
}

double c2f()
{
    std::cout << "Enter the degree count in whole numbers \n";
    std::cin >> degrees;
    degrees2 = (degrees * 1.8) + 32;
    std::cout << degrees2;
}
#endif //TEMPCONVERSION_FUNCTIONS_H

main.cpp

include <iostream>
#include </home/dylan/ClionProjects/tempconversion/functions.h>


using namespace std;

int conMenu()
{
    std::cout << "Would you like to: \n";
    std::cout << "1. Convert Celsius to Fahrenheit \n";
    std:: cout << "2. convert Fahrenheit to Celsius \n";
    std::cout << "0. Exit the program";
    std:: cout << "Please enter your choice: ";
    std::cin >> choice;

}

if (choice = 1);
{
double c2f();
}

else if (choice = 2)
{
double f2c();
}
else if (choice = 0)
{
return 0;
}
else
{
return 0;
}

【问题讨论】:

  • 您还没有实现main() 函数。你应该从那开始。
  • if 语句只能在函数中使用。也许您打算将它们放在您尚未定义的main 中。
  • = 而不是==if() 之后的分号。没有main().h 中的变量。看起来像 if 语句中的函数声明的东西。恭喜你努力取得成功,但这里有太多错误,你可能跳得太远了......
  • 这有点尴尬:)。包括 main() 让一切都正确编译,代码只是在执行选择部分后给我一个返回 0 。所以,我需要解决这个问题。如果我需要进一步的帮助,网站礼仪是否要求我提出一个新问题或添加到这个问题?
  • @Dylan 添加另一个问题,但看看我的答案......该程序有效,但到处都有错误。如果你想走得更远,你会遇到一堵巨大的墙,因为你缺少基础知识

标签: c++ header main


【解决方案1】:

一个程序以您没有的main 函数开始,并且一切都应该正常运行。您的 if 语句在您的程序之外,无法正常工作

=== 之间有区别:

=是做作,告诉某事等于某事

== 用于比较。

在这里,用那个替换你的 main.cpp 文件:

#include <iostream>
#include </home/dylan/ClionProjects/tempconversion/functions.h>


using namespace std;

int main() // every program in C++ MUST HAVE AN int main() function
{
    std::cout << "Would you like to: \n";
    std::cout << "1. Convert Celsius to Fahrenheit \n";
    std:: cout << "2. convert Fahrenheit to Celsius \n";
    std::cout << "0. Exit the program";
    std:: cout << "Please enter your choice: ";
    std::cin >> choice;

    if (choice == 1); // is choice equal to 1 ?
    {
        double c2f();
    }

    else if (choice == 2) // is choice equal to 2 ?
    {
        double f2c();
    }
    else if (choice == 0) // is choice equal to 0 ?
    {
        return 0;
    }

  return 0; 
// in every case, because it is "int main()" the program should return an integer, here is 0

}

另一个问题,如果一个函数返回一些东西,你必须告诉函数返回哪些数据,例如int main()返回一个整数。如果什么都没有返回,那么就写void nameFunction(),因为在你的functions.h 文件中你的函数实际上没有返回任何东西,但是你告诉你的程序它们返回double,就像double f2c()。将它们替换为void f2c()

提示:你真的应该学习更多关于 C++ 编程的知识

【讨论】:

    【解决方案2】:

    您确实在集成头文件时遇到了问题。但是,编译错误与头文件无关。您在这里有两个不同的问题。

    编译器错误是因为您的if() 语句不在任何函数内。当你问自己if() 语句是哪个函数的一部分时,这很明显?

    (if 语句无论如何都是错误的,因为很明显它应该使用== 运算符而不是= 赋值运算符,但这本身并不是编译错误的原因,但这也需要修复)。

    就集成头文件而言:您正在头文件中定义整个函数。虽然从技术上讲,这并没有什么问题,但头文件应该只用于声明函数和类。当您开始学习头文件时尤其如此。

    一旦你了解了头文件是如何工作的,并且你对 C++ 有更多的了解,那么你就能明白什么时候可以,什么时候不能,将整个函数放入头文件,以及什么样的函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多