1
我需要在C++中構建一個異構類型的數組。 該數組是在編譯時構造的,但其構造分散在不同的編譯單元(即不同的源文件)中。 該數組應該很容易擴展爲包含新類型作爲應用程序進度的編程。 運行時應該訪問結果數組。C++不同類型的數組
這可能嗎?
我鑽了一點點進入boost mpl和boost融合,但沒有找到答案。
感謝
我需要在C++中構建一個異構類型的數組。 該數組是在編譯時構造的,但其構造分散在不同的編譯單元(即不同的源文件)中。 該數組應該很容易擴展爲包含新類型作爲應用程序進度的編程。 運行時應該訪問結果數組。C++不同類型的數組
這可能嗎?
我鑽了一點點進入boost mpl和boost融合,但沒有找到答案。
感謝
陣列是在編譯時構造,然而,它的結構 分散在不同的編譯單元
這是不可能的。翻譯單位不知道其他翻譯單位。由於除TU之外沒有任何東西可以協調任何事情。
假設您想要在foo.cpp
中填充數組,請添加Foo
類型的對象。應該放置哪個索引?這是不可能確定的,因爲不知道哪些其他指標存在。
鏈接器知道所有的TU。唉,鏈接器仍然很愚蠢,無法在鏈接時運行用戶代碼。如果鏈接器有點聰明,它可以爲你的TU做類似myarray.push_back(Foo())
的操作。但它不能。
當然你仍然可以在運行時做push_back
。
也許如果你描述你的真實問題,集體將能夠找到解決方案。
如果你已經在使用Boost,爲什麼不'std :: vector'? –
kennytm
2012-07-15 06:57:25
若要將不同類型放在數組中,如果它們具有公共基類,請將unique_ptr用於基類。否則,把它們放在一個數組中是沒有意義的。你會想要一個結構或元組。 – 2012-07-15 07:00:54