在没有类定义的标头中定义成员变量
Defining member variable in header without class definition
我有两个文件,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;
但是我得到了"语法错误:"公共">
如果您希望全局在其他翻译单元 (TU((其他文件(中可见,则必须在其他 TU 中extern
声明它们:
标题.h:
// Include guard omitted
extern bool rescan; // Declaration
文件.cpp
#include "Header.h"
bool rescan = false; // Definition
// ...
文件2.cpp
#include "Header.h" // To see extern bool rescan;
void foo()
{
rescan = true;
}
// ...
相关文章:
- 为什么我不能在一个类的不同行中声明和定义成员变量?
- C++令牌定义成员
- 在没有类定义的标头中定义成员变量
- 如何在类的构造函数中定义成员向量的大小
- 如何在C++中动态定义成员函数
- C++ Boost.Serialization - 用户定义成员的非侵入式序列化
- C++类 - 使用公共变量并在类外定义成员函数
- G++ - 对已定义成员函数的未定义引用
- 在哪里以及如何定义成员变量?在头文件还是实现文件中?
- 是否可以修改STL并自定义成员函数
- 从 boost::mpl:vector 类型列表中定义成员变量
- 在构造对象时定义成员函数
- 为什么定义成员函数指针变量需要类名
- 复制构造函数中的 C++ 用户定义成员
- 如何根据类参数定义成员类运算符
- 使用指向未定义成员函数的指针时的未定义引用
- 如何在运行时定义成员数组大小
- C++-在模板类之外但在头中定义成员函数
- c++在不知道对象类型的情况下定义成员函数指针
- 在特定偏移量中定义成员的结构