【问题标题】:Trying to access a method with method calls throws multiple error尝试使用方法调用访问方法会引发多个错误
【发布时间】:2023-03-13 07:49:02
【问题描述】:

我正在尝试从切换菜单访问方法以显示存储在向量中的数据。但是,我不确定如何告诉案例 1 采用方法调用中的方法。 错误列表如下:

Error   1   error C2065: 'applicant' : undeclared identifier    
Error   2   error C2275: 'Applicant' : illegal use of this type as an expression    
Error   3   error C3861: 'viewApp': identifier not found    

下面是我目前正在处理的代码有问题。

 do
    {
    std::cout << "Menu\n";
    std::cout << "\t1. View Applications\n";
    std::cout << "\t2. Record Orders\n";
    std::cout << "Enter your selection: ";
    cin >> option;

  switch (option)
    {
        case 1:
            {
                viewApp(Applicant& applicant);
            }
            break;
        case 2:
            {
                Order cO;
                cO.createOrder();
            }
        default: 
            std:cout << option << " is not a valid menu item.\n";
            std::cout << endl;
}
}
while(option !=5);

这是当前切换菜单的 sn-p,我需要“案例 1”才能转到下面的 viewApp() 方法。

int viewApp(Applicant& applicant) //can't get the switch to go to this method
{
//code
}

void Order::createOrder() //this works fine and the switch menu goes straight to it
{
//code
}

任何帮助将不胜感激,非常感谢。 汤姆

【问题讨论】:

    标签: c++ class pointers methods


    【解决方案1】:

    在方法调用中:

    viewApp(Applicant& applicant);
    

    您正在重命名参数的类型,这不是必需的(或在语言语法范围内允许)。

    viewApp(applicant);
    

    如果申请人在范围内,则可以使用,但在此之前您需要创建它:

    Applicant applicant;
    viewApp(applicant);
    

    此外,您可能在编写的菜单选择代码中存在错误。第二个 case 语句需要一个 break,所以它不会自动落入默认 case 并始终触发“找不到菜单选项”位。

    【讨论】:

    • 感谢您的明确答复。但是,现在我有两个错误,c3861 'viewApp' Identifier not found 和 c2530 'applicant' 引用必须初始化。不知道如何解决,谢谢。
    • viewApp 是在哪里定义的?您是否将声明它的标头包含在当前文件中?另外,申请人可以使用哪些构造函数?由于您尝试使用它的方式,我假设空构造函数可用。
    • @TomCummins 3861 'viewApp' Identifier not found 是因为您在使用之前没有声明viewApp。要么在使用之前移动定义(可能在main之前),要么在使用之前添加原型声明。
    • @TomCummins 例如Applicant 对象的另一个副本。 &amp; 使 applicant 成为引用。但只需将其更改为Applicant applicant;,因为您不希望在此处引用,但您需要原始对象。 reference 函数viewApp 将其作为参数是对该实例的引用。
    • @AdamS 当然很简单,我应该知道。也许我只是在慢慢放弃:P
    猜你喜欢
    • 2010-11-21
    • 2021-02-26
    • 1970-01-01
    • 2018-10-23
    • 2019-01-06
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多