2012-06-28 69 views
0

我有一個靜態字符數組的類。 陣列的大小在argv給我。創建一個字符數組,其大小由參數給出 - C++

我想要做財產以後這樣的:

class ABC { 

public: 
    static char *buffer; 
    ABC(int size) { 
    ABC::buffer = new char[size]; 
    } 

} 

// in other file: 

ABC tempVar(atoi(argv[1])); 

但這似乎並沒有工作。我得到這樣的錯誤:

錯誤2錯誤LNK2001:解析外部符號:(?緩衝@ ABC @@ 2PADA) 「公共靜態字符 * ABC ::緩衝區」 gpslib.lib

如何我能解決這個問題嗎?

+0

你不想做那樣的事情。越野車。 – 2012-06-28 13:56:21

+0

它的用途是什麼?我沒有看到任何意見。另外,避免使用'atoi'。使用'std :: stoi'(由C++ 11引入)。 – Nawaz

+0

@Nawaz - 有什麼區別? – kakush

回答

5

您只需要定義static buffer一次,它只被聲明。以下內容添加到只有一個.cpp文件:即每次的ABC一個實例被創建

char* ABC::buffer; 

注意,以前分配buffer將丟失(內存泄漏),這是不是你想要的。

更強大的解決方案將buffer作爲實例(非靜態)成員。一個更強大的解決方案將使用std::string而不是char*,併爲您管理動態內存分配。

相關問題