錯誤C2071:「詞彙::名單」:非法存儲類C2071非法存儲類,外部載體在類中聲明和其他類
我有一個類,上面寫着一串字符串到內存中,然後提供允許對這些字符串及其關係進行操作的函數。作爲其中的一部分,我希望在啓動一些操作的main.cpp和操作完成的類之間有一個共享內存。爲此,在之前的文章中,建議使用extern類型。但是,現在有一個錯誤。我如何解決這個錯誤,並有一個由幾個類共享的內存空間?
在lexicon.h
#ifndef _lexicon_h
#define _lexicon_h
#include <string>
#include <vector>
using namespace std;
class Lexicon {
public:
Lexicon();
~Lexicon();
extern vector<vector<string>> list;
void buildVectorFromFile(string filename, vector<vector<string>> &list, int v, int h);
private:
struct charT { char letter; nodeT *next;};
};
#endif
在main.cpp中
#include <string>
#include <iostream>
#include <iomanip>
#include <fstream>
#include <vector>
#include "lexicon.h"
void buildVectorFromFileHelper (Lexicon & lex)
{
vector<vector<string>> list;
lex.buildVectorFromFile("ASCII.csv", list, 200, 2); //build 2x200 vector list
}
你搞錯了。 「要點在於內存是在.cpp文件中用extern前綴全局聲明的,然後重新使用內存,然後在該.cpp文件中再次聲明它。」 - 你可以用'extern'聲明任何地方。它通常位於標題中,因爲您可以在多個位置包含該標題,但它可以位於任何位置。在cpp文件中的第二次遇到的是一個定義。完全不同。這隻能在一個地方。 – 2012-07-25 22:52:58
有一個錯字,我編輯了答案 - 我無法從頭文件中獲得'extern'內存,儘管這似乎是合乎邏輯的方法。它適用於我的回答。 – 2012-08-02 23:24:27