我有两个文件,list.cpp
和Header.h
。文件的片段如下。我知道,如果头文件用于某个类,则设置会有所不同。例如
class MyClass
{
public:
void foo();
int bar;
};
但是,由于我实际上不是在这里使用一个类(如果我输入错了,请更正我),是否无法像下面这样在public:
和private
下声明内容?>
此外,如果要将全局变量rescan
作为成员变量放置在头文件中,则在函数定义下方,只有main
函数才能看到该变量。为什么它不在其他功能的范围内?
list.cpp
:
#include <boost/algorithm/string.hpp>
#include <vector>
using namespace std;
vector<int> results;
bool rescan;
int main()
{
vector<vector<string>> list;
int success = readFile(list);
vector<vector<string>> bad = findMe(list);
system("pause");
return 0;
}
vector<vector<string>> findMe(vector<vector<string>> find)
{
rescan = true;
}
Header.h
:
#pragma once
#ifndef HEADER_H_INCLUDED
#define HEADER_H_INCLUDED
#include <string>
#include <vector>
std::vector<std::vector<std::string>> findMe(std::vector<std::vector<std::string>>);
#endif
编辑:我在头文件中尝试了此操作
public:
bool rescan;
但是我收到“语法错误:'公开'
答案 0 :(得分:0)
如果您想在其他翻译单元(TU)(其他文件)中显示全局变量,则必须在其他TU中将它们声明为extern
:
// Include guard omitted
extern bool rescan; // Declaration
#include "Header.h"
bool rescan = false; // Definition
// ...
#include "Header.h" // To see extern bool rescan;
void foo()
{
rescan = true;
}
// ...