我试图使用extern变量来获取我的一个头文件和我的主.cpp文件之间的数据。我有一个.h文件只为外部变量设置。该文件名为externTwo.h:
#include <string>
#include <vector>
#include "symbolTable.h"
#include <stack>
using std::stack;
extern stack<symbolTable*> parentalStack;
#endif
然后它应该在我的.cpp中使用:
#include "symbolTable.h"
//#include "node.h"
#include <FlexLexer.h>
#include<iostream>
#include<vector>
#include "externals.h"
#include "externTwo.h"
using std::vector;
using namespace std;
int yyparse();
yyFlexLexer scanner;
Node *tree;
extern std::vector<Node*> plantation;
extern std::stack<symbolTable*> parentalStack;
int main ()
{
symbolTable* base = new symbolTable();
std::vector<symbolTable*> theTable;
parentalStack.push(base); //put the top scope in
theTable.push_back(parentalStack.top());
}
最后在我的附加.h文件(node.h)中:
#ifndef NODE_H
#define NODE_H
#include<iostream>
#include<string>
#include <vector>
#include <stack>
#include "symbolTable.h"
#include "externTwo.h"
using std::string;
using std::endl;
using std::ostream;
using std::vector;
using std::stack;
extern stack<symbolTable*> parentalStack;
class Node
{ };
#endif
每当我尝试在main中访问parentalStack时,我都会收到一个&`34;未定义的对`parentalStack&#39;&#34;错误。我很困惑为什么因为我在一个单独的extern文件中以相同的方式声明了extern种植园,并且能够从main中获得它。如果我尝试使用parentalStack,我也会从node.h中获得相同的错误。
非常感谢提前!
答案 0 :(得分:1)
从cpp文件中删除extern
。这将定义它。 extern
仅声明它。只需确保只有一个定义它的.cpp文件。