当我明显在上面声明它时,我在main.cpp上遇到redo char(粗体)的错误。我也想知道为什么它要求我在使用命名空间std之前放一个分号,因为我之前从未这样做过。
//ReverseString.h
#include <iostream>
#include <string>
using namespace std;
class StringClass
{
public:
string string;
int GetStringLength (char*);
void Reverse(char*);
void OutputString(char*);
void UserInputString (char*);
StringClass();
private:
int Length;
}
//StringClass.cpp
#include <iostream>
#include <string>
#include "ReverseString.h"
;using namespace std;
void StringClass::UserInputString(char *string)
{
cout << "Input a string you would like to be reversed.\n";
cin >> string;
cout << "The string you entered: " << string << endl;
}
int StringClass::GetStringLength (char *string)
{
Length = strlen(string);
return Length;
}
void StringClass::Reverse(char *string)
{
int c;
char *front, *rear, temp;
front = string;
rear = string;
GetStringLength(string);
for ( c = 0 ; c < ( Length - 1 ) ; c++ )
rear++;
for ( c = 0 ; c < Length/2 ; c++ )
{
temp = *rear;
*rear = *front;
*front = temp;
front++;
rear--;
}
}
void StringClass::OutputString(char *string)
{
cout << "Your string reversed is: " << string << ".";
}
//Main.cpp
#include <iostream>
#include <string>
#include <fstream>
#include "ReverseString.h"
;using namespace std;
const int MaxSize = 100;
int main()
{
do
{
char string[MaxSize];
**char redo;**
StringClass str;
str.UserInputString(string);
str.Reverse(string);
str.OutputString(string);
//Asks user if they want redo the program
cout << "Would you like to redo the program?\n";
cout << "Please enter Y or N: \n";
**cin >> redo;**
}while(redo == 'Y' || redo == 'y');
}
为什么它声明它但却给出了一个未声明的错误,这真的很令人困惑。
答案 0 :(得分:1)
redo
被声明为循环中的局部变量。它的范围从声明点开始,并在while
关键字之前的右括号结束。 redo
条件中未知名称while
。
答案 1 :(得分:0)
在ReverseString.h
中的课程声明后,您错过了分号。
编译器正在接收行using namespace std;
上的错误,因为这是首次检测到问题时。这并不意味着你应该在那里放置分号。
有些编译器会暗示你可能会从类声明中遗漏一个分号,而其他编译器则不会。这个错误很常见。如果您在一个荒谬的地方看到缺少分号错误,您应该立即认为您可能不小心将其中一个从标题中删除了。