如何在单独文件中定义的成员函数中使用成员变量

时间:2017-05-10 23:52:19

标签: c++

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变量成为静态?

3 个答案:

答案 0 :(得分:4)

首先,您已将parseUserInput声明为hpp中的字符串字段,而不是函数。通过使用paretheses将其声明为成员函数。

std::string parseUserInput();

其次,在userInput.cpp中,您定义了一个名为parseUserInput()的全局函数,而不是成员函数。要在UserInput类上定义成员函数,请使用范围解析运算符::

std::string UserInput::parseUserInput() {
    ...
}

最后,您应该在代码中避免使用using namespace std;

答案 1 :(得分:1)

你好,你想过制作一个get函数......

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.
}