0

可能重复:
C++:从函数访问主变量的最简单方法?

我需要将我的变量“输入”从 a.cpp 中的主函数获取到另一个名为 check in b.cpp 的函数。我在谷歌和这个论坛/东西上调查了它,我发现你可以使用全局变量来做到这一点extern,但使用这些也很糟糕,我找不到替代方案的答案?我应该如何在不使用全局变量的情况下将变量中的数据传输到其他函数?


我如何让论点起作用的代码。(我在这里尝试做的是一个控制台“管理器”,用于解决欧拉项目的解决方案,我可以通过输入调用它来解决/查看,我在 40 分钟前开始处理代码。)

主文件

#include <iostream>
#include <windows.h>
#include "prob.h"

using namespace std;

int check(string x);

int main()
{
    string input = "empty";
    clear();

    cout << "Welcome to the Apeture Labs Project Euler Console! (ALPEC)" << endl << endl;
    cout << "We remind you that ALPEC will never threaten to stab you" << endl;
    cout << "and, in fact, cannot speak. In the event that ALPEC does speak, " << endl;
    cout << "we urge you to disregard its advice." << endl << endl;
    cin >> input;
    cin.get();
    check(input);

    cout << input << endl;
    cin.get();
    return 0;
}

概率.h

#ifndef PROB_H_INCLUDED
#define PROB_H_INCLUDED

int main();

int clear();
int check();
int back();

int P1();
int P2();
int P3();
int P4();

#endif // PROB_H_INCLUDED

返回.cpp

#include <iostream>
#include <windows.h>
#include "prob.h"

using namespace std;

int clear()
{
    system( "@echo off" );
    system( "color 09" );
    system( "cls" );

    return 0;
}

int check( string x )
{
    if( x == "help" );

    if( x == "empty" )
    {
        cout << "And....  You didn't enter anything..." << endl << endl;
    }

    else
    {
        cout << "Do you have any clue what you are doing? " << endl << endl;
    }

    return 0;
}
4

2 回答 2

3

通过将数据作为函数参数传递。

例如:

int doSomething(int passedVar)
{
}

int main()
{
    int i = 10;
    doSomething(i);

    return 0;
}

请注意,函数定义甚至可能驻留在不同的 cpp 文件中。main只需要查看函数声明,链接器应正确链接函数定义 。

通常,我们会在头文件中添加函数声明并将头文件包含在 main 中,同时在另一个 cpp 文件中提供函数定义。


您显示的代码有许多问题:

  • 不需要main在头文件中声明。
  • 您的函数声明和定义check()不匹配。你的头文件说它不需要参数,你定义了一个函数定义来接受一个参数。显然,它们不匹配。就目前而言,它们是两个完全不同的功能。

正如编译器所看到的,您声明了一个您从未提供过的定义的函数,并且您在 cpp 文件中定义了另一个函数。因此,从未定义过声明的函数(一个没有参数的函数),因此未找到定义错误。

于 2012-12-31T03:32:52.220 回答
0

安德烈蒂塔是绝对正确的。如果您在一个模块中有一个“值”(例如,a.cp​​p 中的“main()”),并且您希望在函数中使用该值(例如,b.cpp 中的“foo()”)......那么只需将该值作为函数参数传递!

随着您的程序变得越来越复杂,您可能会开始使用类(而不是函数)。

于 2012-12-31T03:33:38.640 回答