userInput.hpp
#include <string>
class UserInput{
public:
std::string rawInput;
std::string parseUserInput;
};
userInput.cpp
#include <iostream>
#include "userInput.hpp"
#include "stringManipulation.hpp"
using namespace std;
string branchCommand;
string parseUserInput(){
removeWhiteSpaces(rawInput);
return branchCommand;
}
我在userInput.hpp中使用成员函数parseUserInput
创建了一个类,我的意思是在userInput.cpp中定义该函数。但是,当我尝试在定义中使用rawInput时,我不能不这样做,以便将rawInput
声明为static
。
是否可以在函数定义中使用rawInput
字符串而不使rawInput
变量成为静态?
答案 0 :(得分:4)
首先,您已将parseUserInput
声明为hpp中的字符串字段,而不是函数。通过使用paretheses将其声明为成员函数。
std::string parseUserInput();
其次,在userInput.cpp中,您定义了一个名为parseUserInput()
的全局函数,而不是成员函数。要在UserInput
类上定义成员函数,请使用范围解析运算符::
std::string UserInput::parseUserInput() {
...
}
最后,您应该在代码中避免使用using namespace std;
。
答案 1 :(得分:1)
std::string returnRawInput() {return rawInput;}
然后你可以调用这个函数来获取输入......
答案 2 :(得分:1)
您当前的课程如下:
<强> userInput.hpp 强>
// Missing Header Guards Or #Pragma Once
#include <string>
class UserInput{
public:
std::string rawInput; // Member Variable of UserInput
std::string parseUserInput; // Member Variable of UserInput
};
userInput.cpp
#include <iostream> // Okay
#include "userInput.hpp" // Okay
#include "stringManipulation.hpp" // Okay
using namespace std; // Bad Practice
string branchCommand; // non const local Global Variable - can be bad practice
// Looks like a global function that is not a part of your class
string parseUserInput(){
removeWhiteSpaces(rawInput);
return branchCommand; // returning global variable that isn't used?
}
你的意思是?
<强> userInput.hpp 强>
#ifndef USER_INPUT_HPP
#define USER_INPUT_HPP
#include <string>
class UserInput {
public:
std::string rawInput; // Member Variable
std::string parseUserInput(); // Now a Member Function that Returns a std::string
};
#endif // USER_INPUT_HPP
<强> userInput.cpp 强>
#include <iostream>
#include "userInput.hpp"
#include "stringManipulation.hpp"
std::string branchCommand; // Still a bad idea if not const or static
std::string UserInput::parseUserInput( /* should this take a string from the user? */ ) {
removeWhiteSpaces( rawInput );
return branchCommand; // ? ... Still not sure what you are returning.
}