如果我有一個基類A
我希望能夠在使用數組我希望能夠有一個,其大小由它的孩子請問C++支持抽象數組長度
確定A
編寫代碼指針數組A
,但我不希望有用於每個長度
創建一個單獨的成員函數的最佳我能想出如下:
class A
{
char type;
int * values;
int calc(int pos); // implementation is not relevant to question
public:
A (int * arr) : values(arr) {}
int foo(int pos)
{
int index=calc(pos);
return values[index];
}
};
template <size_t X>
class B : public A
{
int vals[X];
public:
B() : A(vals) {}
};
template<>
class B<0>; // don't want 0 allowed
這允許訪問一個數組在哪裏的孩子確定大小,並且它是連續的內存
但是,它浪費了values
指針的空間,並且模糊了編譯器可能用於優化的信息,因爲實現它不一定是孩子通過構建的連續內存,但我想要求連續記憶。
理想我想用直接在A
偏移在C
這個工程爲int values[]
,但沒有C++
相當於
能的基類是模板? –
代碼是錯誤的。指向數組的指針不是**指向它的數據類型的指針! – SergeyA
[std :: vector](http://www.cplusplus.com/reference/vector/vector/)可能嗎? –
Weston