Код неправильно создает объекты 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;
}
Мне не совсем ясно, как должен работать объект Input
.Локальный textString
кажется избыточным, но я все равно пытался его использовать.