C++ 使用指针从类中引用和更改全局变量

C++ 使用指针从类中引用和更改全局变量,c++,string,class,pointers,iostream,C++,String,Class,Pointers,Iostream,这是我们不久前在机器人俱乐部做的一个实践。我们应该创建一个类,一个将用户输入分配给变量(cin),另一个将其打印出来(cout)。我们需要使用指针来实现这一点,这就是我想到的 #include "stdafx.h" #include <iostream> #include <string> using namespace std; class Input { public: string* textString = new string(); Inp

这是我们不久前在机器人俱乐部做的一个实践。我们应该创建一个类,一个将用户输入分配给变量(cin),另一个将其打印出来(cout)。我们需要使用指针来实现这一点,这就是我想到的

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

class Input
{
public:
    string* textString = new string();

    Input(string uInput)
    {
        textString = &uInput;
    }

    void userInput() {
        cout << "Enter some text - ";
        cin >> *textString;
    }
private:
    // Nothing yet
};


class Output
{
public:
    string* inputText = new string();

    Output(string uInput)
    {
        inputText = &uInput;
    }

    void userOutput() {
        cout << *inputText << endl;
    }
private:
    // Nothing yet
};

int main()
{
    string userInput = "EMPTY";
    cout << &userInput << endl;

    Input i = Input(userInput);
    i.userInput();

    Output o = Output(userInput);
    o.userOutput();

    return 0;
}
#包括“stdafx.h”
#包括
#包括
使用名称空间std;
类输入
{
公众:
string*textString=新字符串();
输入(字符串输出)
{
text字符串=&uInput;
}
void userInput(){
cout>*文本字符串;
}
私人:
//还没有
};
类输出
{
公众:
string*inputText=新字符串();
输出(字符串输出)
{
inputText=&uInput;
}
void userOutput(){

cout代码没有正确地创建
i
o
对象。我猜您可能会说
Input*i=new Input(userInput);
-这会起作用,但也需要进一步更改

我将您的
Input::userInput()
更改为获取指向字符串的指针。这种指向参数的指针布局同样适用于修改基类型和对象

我真的不喜欢使用
cin
cout
,我个人会使用
fgets()
,然后将其中的值放入字符串中

#include <string>
#include <iostream>


class Input
{
    private:
    std::string textString;

    public:
    Input ( std::string uInput )
    {
        textString = uInput;
    }

    void userInput( std::string *intoString )
    {
        std::cout << "Enter some text - ";
        std::getline( std::cin, textString );
        *intoString = textString;
    }
};


class Output
{
    private:
    std::string inputText;

    public:
    Output( std::string uInput )
    {
        inputText = uInput;
    }

    void userOutput()
    {
        std::cout << inputText << std::endl;
    }
};

int main(  )
{
    std::string userInput = "EMPTY";
    std::cout << userInput << std::endl;

    Input i( userInput );
    i.userInput( &userInput );

    Output o( userInput );
    o.userOutput();

    return 0;
}
#包括
#包括
类输入
{
私人:
std::string textString;
公众:
输入(标准::字符串输入)
{
textString=uInput;
}
无效用户输入(std::string*intoString)
{

STD::这里有很多错误的东西,很难决定从哪里开始。内存泄漏。由于临时对象的地址,没有定义的行为。这里肯定有一个非常基本的误解:C++是如何工作的。最好的办法是花些时间。这里不只是一个问题,而是其中的几个问题。哦,和T。这里没有“全局变量”这里也有一个术语问题。什么是预期的结果?代码< O.EndoTruts<代码>应该有用户输入的内容吗?山姆。我理解我的代码写得很差,因为我是C++新手。这就是为什么我问这个问题的原因。因为我不知道为什么我的代码不能工作,而且互联网资源没有。帮了我。对金斯利来说——是的,这就是我想要的。