在头文件中声明的C ++ extern数组在main.cpp中不可用

时间:2017-09-03 11:29:49

标签: c++ arrays visual-studio

我是C ++的初学者,所以我的问题很可能很容易解决。 我的问题是我试图在我的头文件中声明一个数组,但我无法在我的main.cpp单元中访问它。 保持打印的错误消息是:“初始化:无法从'int'转换为'int [6]'

这是我头文件中的代码:

#pragma once

extern int Guess[6] = 0;

void Input(){
    std::cout << "Please enter your 6 numbers in the range of 1-49 line by line:" << std::endl;
    for (int i = 0; i < 6; i++){
        std::cin >> Guess[i];
        for (int i1 = 0; i1 < 6; i1++){
            if (Guess[i1] > 50){
                std::cout << "Your number is not in the range!!! Try again please:" << std::endl;
                Guess[i1] = 0;
                std::cin >> Guess[1];

            }
        }

    }

    std::cout << Guess[0] << std::endl;
    std::cout << Guess[1] << std::endl;
    std::cout << Guess[2] << std::endl;
    std::cout << Guess[3] << std::endl;
    std::cout << Guess[4] << std::endl;
    std::cout << Guess[5] << std::endl;
}

这是main.cpp中的代码:

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

int main(){

    int Guess[6];
    Input();
    return 0;
}

感谢任何潜在的帮助。

1 个答案:

答案 0 :(得分:1)

您不应初始化外部数组,只能转发声明它。所以你可以这样声明:

extern int Guess[6];

在另一个文件中,您应该全局定义它:

//source.cpp

int Guess[6]; // Remove the keyword `extern` here and you must specify the size here.

void DoSomeThing(){

    // now you can use it here
    Guess[0] = 0; // eg
}
  • 您也可以在不指定大小的情况下声明外部数组:

    // input.h
    
    extern int bigIntArray[];
    
    // source.cpp
    
    int Guess[6];
    
    void DoSomething(){
    
        // Do some staff on the array.
    }
    

这告诉编译器该数组是在其他地方定义的。