2015-06-02 52 views
0

我試着問這個問題,這是在細節上多一點模糊,但現在我到家了,我希望我能更好地解釋自己。如何在標題中存儲變量,以便在主cpp中使用?

說,我有一個類,在這種情況下,TestClass,我已經在TestClass.h中聲明瞭它的構造函數和方法。現在,我想創建這些元素的新陣列,並將它們存儲的地方,在加載到我的main.cpp,當我想。

我想這樣做,是在新的頭這樣做,我叫Contents Table.h。在這裏,我嘗試製作這些TestClass元素的數組。但是,我不知道,如何正確地做到這一點。

Testclass.h

#pragma once 

#include <string.h> 
#include <iostream> 

using namespace std; 

class TestClass 
{ 
private: 
    string name; 
    string description; 
public: 
    TestClass() 
    { 
     name = ""; 
     description = ""; 
    } 
    TestClass(string name, string description) 
    { 
     this->name = name; 
     this->description = description; 
    } 
    ~TestClass() 
    { 
    } 
}; 

這裏是目錄,在這裏我要存儲我的數據,我手動寫進去,我有兩個想法關於這樣做,不知道哪一個是可行的:

第一個想法:

ContentsTable.h

#include "Testclass.h" 

TestClass* buildData(void) 
{ 
    TestClass* World = new TestClass[5]; 
    World[0] = TestClass("A", "A"); 
    //Etc, fill the rest up. 
    return World; 
} 

,並在主的.cpp,我會調用這個函數,像

#include "Contents Table.h" 

//... 

TestClass* DataArray = buildData(); 

設想二:

ContentsTable.h

#include "Testclass.h" 

namespace DataArray2 
{ 
    extern TestClass* DataArray2 = new TestClass[5]; 
    DataArray2[0] = TestClass("A", "A"); 
}; 

而且我在main.cpp中再次聲明,但第二件事,我試圖重新聲明DataArray2,當我嘗試給它一個元素值時。 (同樣,我敢肯定,這是我的錯這個,對不起,如果它看起來像一個非常平庸的代碼,我沒有學習很長時間。)

+0

我更喜歡第一種方式,但不需要使用指針。 – doctorlove

+0

我很想嘗試兩種,看看哪個更好,但我不能得到第二個工作,因爲我是菜鳥,我似乎無法找出,如何修改數組的元素。 – SparksH

+0

我建議使用'的std ::矢量',而不是原始指針的陣列。 – Carlton

回答

0

不知道這是否符合您的要求,但我使buildData看起來像這樣(C++ 11解決方案):

#include <vector> 
using std::vector; 

/*Define TestClass*/ 

vector<TestClass> buildData() { 
    vector<TestClass> v; 
    v.emplace_back("A", "A"); 
    return v; 
} 
相關問題