【发布时间】:2023-03-06 02:24:01
【问题描述】:
好的...所以,我正在尝试通过使用它来学习 C++,并在此过程中提出任务。我为我做的一个任务是制作一个类似于“通用计算器”的程序,基本上是一个可以询问“你想做什么?”的计算器。如果用户输入“计算器”,它将运行我已经制作的计算器应用程序。但我想制作程序,以便它使用头文件来存储我的所有功能。为此,我相当确定我需要使用类女巫很好,我只是不知道如何使用类。我已经将我的计算器程序导入到我的通用计算器头文件中,并且我认为我做得正确,因为调试中没有任何错误,并且任何东西下都没有任何红色或绿色的波浪线。通用计算器 CPP 文件中的内容也是如此。
因此,我的问题在于我无法编译和运行我的代码。编译时出现两个错误
错误 C2653:“计算器”:不是类或命名空间名称
错误 C2065:“CalculatorApp”:未声明的标识符
对此进行调查,似乎“#include 头文件”存在一些问题。当我在主 CPP 文件中注释“#include”或类似内容时,我在调试中遇到了类似的问题:
错误 C2065:“cout”:未声明的标识符
错误 C2065: 'cin': 未声明的标识符
但请注意,当我这样做时,实际的“cin”和“cout”函数(命令?idk 它叫什么)下面没有红色波浪线。就像调试错过了“#include Header file”的备忘录,正在以不同的方式读取代码。
万能计算器V1.0.CPP
// Universal Calculator V1.0.cpp : Defines the entry point for the console application.
//
#include "Universal Calculator.h"
#include "stdafx.h"
#include <string>
#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{
string task;
cout << "What would you like to do? ";
cin >> task;
if (task == "calculator")
{
calculator::CalculatorApp;
}
Sleep(3000);
system("CLS");
return main();
}
万能计算器.h 头文件:
#ifndef UNIVERSAL CALCULATOR_h
#define UNIVERSAL CALCULATOR_h
#include "stdafx.h"
#include <string>
#include <iostream>
#include <Windows.h>
using namespace std;
class calculator
{
public:
float FirstNumber;
float SecondNumber;
float answer;
void Add()
{
cout << "What is your first number? ";
cin >> FirstNumber;
cout << "What is your second number? ";
cin >> SecondNumber;
answer = FirstNumber + SecondNumber;
cout << "The answer is: " << answer << endl;
}
void Subtract()
{
cout << "What is your first number? ";
cin >> FirstNumber;
cout << "What is your second number? ";
cin >> SecondNumber;
answer = FirstNumber - SecondNumber;
cout << "The answer is: " << answer << endl;
}
void Multiply()
{
cout << "What is your first number? ";
cin >> FirstNumber;
cout << "What is your second number? ";
cin >> SecondNumber;
answer = FirstNumber * SecondNumber;
cout << "The answer is: " << answer << endl;
}
void Divide()
{
cout << "What is your first number? ";
cin >> FirstNumber;
cout << "What is your second number? ";
cin >> SecondNumber;
answer = FirstNumber / SecondNumber;
cout << "The answer is: " << answer << endl;
}
void CalculatorApp()
{
int Calculator();
{
int Operation;
cout << "Bode's Calculator V2.1" << endl;
cout << "What is the operation? Add[1], Subtract[2], Multiply[3] or Divide[4]? ";
cin >> Operation;
switch (Operation)
{
case 1:
Add();
break;
case 2:
Subtract();
break;
case 3:
Multiply();
break;
case 4:
Divide();
break;
}
}
}
};
#endif
我知道这篇文章已经很长了,但另外:我还将“#pragma once”更改为现在认为的问题,但没有明显差异。最后一个问题:如果您的头文件中有所有“#includes”,并且主 CPP 中有“#include 头文件”,那么您是否不需要在主 CPP 中也有#includes文件?
感谢您抽出宝贵时间阅读这篇很长的文章。如果我在制作这个时错过了一些愚蠢的事情,我很抱歉......
【问题讨论】:
-
总是让
#include "stdafx.h"成为第一个#include。或者在学习时可能更好,根本不要使用预编译的头文件。 -
不是完全重复,但您的答案可以在这里找到:Purpose of stdafx.h
-
#ifndef UNIVERSAL CALCULATOR_h- 你错过了下划线吗? -
如果你把代码放到头文件中,当你修改代码时,所有包含头文件的源文件都需要重新编译。如果代码在源文件中,只需重新编译源文件即可。
-
这个语法是什么:
void CaclulatorApp() { int Calculator(); {?你在尝试嵌套函数吗?
标签: c++ header-files