我想为某些类中的每个点定义一些任意属性,但之前未定义属性的类型和数量。所以,我需要将它们存储在向量中,但我不知道如何定义向量,每个元素可以是非特定大小并且具有不同的字段数。课程如下:
class UnstructuredMesh
{
std::vector<size_t> m_cellBegIndices; //!< Cell Beginning Indices
std::vector<size_t> m_faceBegIndices; //!< Face Beginning Indices
std::vector<OSG::Pnt3f> m_points; //!< Points
std::vector<????, ????> m_pointProperties; //!< Point Properties
};
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
好的,考虑到我的评论,我想给出一个我建议的例子。很难确切知道你正在做什么,但这假设你用某种需要做不同事情的可执行组件来填充向量。
我看到你已经解决了你的问题,但下面的内容可能会让人们更容易理解。显然,矢量中的内存释放应该在实际应用程序中以更好的形式处理,并且不要忘记在现实生活中包含虚拟析构函数。但这会编译并运行。
#include "windows.h"
#include <tchar.h>
#include <vector>
#include <stdio.h>
class iface
{
public:
virtual void execute() = 0;
};
class do_stuff_A : public iface
{
private:
int A;
int B;
public:
do_stuff_A()
{
A = 1;
B = 2;
}
void execute() override
{
printf("\nA is %d, B is %d", A, B);
}
};
class do_stuff_B : public iface
{
private:
double A;
double B;
double C;
public:
do_stuff_B()
{
A = 1.1f;
B = 2.2f;
C = 3.2f;
}
void execute() override
{
printf("\nA is %f, B is %f, C is %f", A, B);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<iface*> my_vec;
my_vec.push_back(new do_stuff_A());
my_vec.push_back(new do_stuff_B());
my_vec[0]->execute();
my_vec[1]->execute();
Sleep(3000);
for (int i = 0; i < my_vec.size(); i++)
{
delete my_vec[i];
}
return 0;
}