c ++ - 不命名类型

时间:2014-03-09 17:49:36

标签: c++

我遇到了问题。当我尝试构建以下代码时,我得到:

'keywords' does not name a type
...
'whitespace' does not name a type

第18-19和22-24行。有人可以帮忙吗?这是代码。

/*
 * cpp2html.h
 *
 *  Created on: Mar 6, 2014
 *      Author: vik2015
 */

#ifndef CPP2HTML_H
#define CPP2HTML_H

#include <string>
#include <vector>
#define VERSION "0.1a"

using namespace std;

vector<string> keywords;
keywords.push_back("for");
keywords.push_back("white");

vector<string> whitespace;
whitespace.push_back("\n");
whitespace.push_back("\t");
whitespace.push_back(" ");

#endif

1 个答案:

答案 0 :(得分:4)

你不能在全局范围内拥有任意表达式(例如函数调用),只允许你的声明。

您对push_back的来电必须在函数中,可能在main。或者,如果要在定义这些对象时初始化这些对象,可以在C ++ 11中执行此操作:

std::vector<std::string> keywords{ "for", "white" };

或者在C ++ 03中:

inline std::vector<std::string> getKeywords()
{
  std::vector<std::string> keywords;
  keywords.push_back("for");
  keywords.push_back("white");
  return keywords;
};
std::vector<std::string> keywords = getKeywords();

此外,永远不要将using namespace std;放在标题中。它会影响包含标题的所有代码,即使该代码不需要使用using指令。