c++ - 如何返回指向对象的指针以便在访问对象方法的函数中使用?

标签 c++ pointers

我到处都找过了,但在这里我无法找到我的确切问题的明确答案。或者我找到了答案,但我没有完全理解。

我有 3 个对象:

Foo Object1;
Foo Object2;
Foo Object3;

我有一个函数,用户可以从与对象相关的字符串列表中进行选择。当用户输入“B”时,我现在想对 Object2 执行操作。

这基本上就是我所拥有的。

string getOption()
{
    string option;

    cout << "Option Menu" << endl;
    cout << "A - Option 1" << endl;    // Object1
    cout << "B - Option 2" << Lendl;   // Object2
    cout << "C - Option 3" << endl;    // Object3

    cin >> option;

    return option;

现在我有了输入,我想对该对象执行多个选项。像这样的东西:

void modifyFooString(foo userSelectedObject)
{
    // Local variables
    string userInput;


    userInput = readInput(); // Function that reads valid input

    userSelectedObject.setMethod(userInput);
}

但功能众多。它处于 while 循环中,因此我需要修改对象,然后在用户想要更改其他对象时重新提示他们。

看这道题的时候,我觉得可以用指针。例如:

void getOption(Foo* &choice)
{
    string option;

    cout << "Option Menu" << endl;
    cout << "A - Option 1" << endl;    // Object1
    cout << "B - Option 2" << Lendl;   // Object2
    cout << "C - Option 3" << endl;    // Object3

    cin >> option;

    if (option == "A")
        choice = &Object1;

    else if (option == "A")
        choice = &Object2;

    if (option == "A")
        choice = &Object3;
}

理想情况下,我现在可以在执行 getOption() 函数的函数中使用指针来修改所选对象。但是,当我尝试像这样实现它时,它就是行不通。

如何返回可用于修改选定对象的指针?

谢谢

最佳答案

你可能会取得更大的成功

if (option == "A")
    choice = &Object1;
else if (option == "B")
    choice = &Object2;
else if (option == "C")
    choice = &Object3;

您还应该阐明“它只是不起作用”的实际含义。

既然你想返回一些东西,那么使用 C++ return 语句更自然。

Foo* getOption()
{
    ...
    if (option == "A")
        return &Object1;
    else if (option == "B")
        return &Object2;
    else if (option == "C")
        return &Object3;

关于c++ - 如何返回指向对象的指针以便在访问对象方法的函数中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31912538/

相关文章:

c++ - 声明指针变量的不同类型

c++ - 使用 ffmpeg-lib 实现一个简单的 MPEG-TS muxer

c++ - 制作某种菜单时出现问题

c# - 为什么 *(int*)0=0 不会导致访问冲突?

c - 我的程序中是否存在悬空指针?

c - 将数组传递给函数时使用的正确模式

c - 调用整数并使用函数将数字添加到用户输入崩溃的程序

c++ - 为什么我收到段错误 : 11 in this code

c++ - 为什么 string::find 的行为不同?

c++ - 如何从方法返回嵌套类指针?