1
我在使用C++一些麻煩:我有一個類原始,它包含一個抽象類緩衝器的成員變量..以許多不同的形式存在於許多不同頂點類型避免虛擬模板
混凝土緩衝區類..點顏色正常,點texcoord正常,點正常,點,等等。
我需要能夠添加任何類型的頂點到由基元派生的類所持有的緩衝區,例如四列表,三列表等。
class Buffer {
//...
template<class T>
virtual void Add(const T&) = 0; // nope! Not compilable
virtual void Add(boost::any&) = 0; // I have been told no boost allowed either..
}
template<class T>
TypedBuffer : public Buffer {
//..
public:
std::vector<T> buffer;
public:
virtual void Add(const T& elem) { buffer.push_back(elem); }
}
class Primitive {
protected:
Buffer vertices;
public:
// How can I allow this to happen? \/
virtual void AddVert(const vec3& v) { vertices.Add(v); }
}
class QuadSet : public Primitive { /*QuadSet Specifics..*/ }
void main(){
QuadSet q;
q.Add(COLOURED_VERT(vec3(1, 2, 3), vec3(0.5,0.5,0.5)));
}
請幫忙!
你總是可以重塑Boost.any。這並不難,而且如果你可以靠抄襲別人的想法爲生,總是很好的。 –