急!定义一个类,类对象是vector,vector的元素是结构体,结构体中又套了多个结构体,C++该怎么表达呢?
环境是VC6.0下面是我写的程序,总觉得不合适。。但作为小白又不知道怎么办。。明天就要交了求大神帮忙看看~~1.结构体该定义在类内还是类外呢?另外调用的时候该怎么写呢,难...
环境是VC6.0下面是我写的程序,总觉得不合适。。但作为小白又不知道怎么办。。明天就要交了求大神帮忙看看~~
1.结构体该定义在类内还是类外呢?另外调用的时候该怎么写呢,难道要写成CTargetState::m_vTargetState.m_strTargetPosition.m_dTargetPostionX;这样吗?
2.,向Vector中压数据该怎么写呢 m_vTargetState.pushback(m_vTargetState) 这样写吗?
3.如果我向vector中压了五个新的vector,然后想调用第三次压进去的vector的话,该如何调用呢?用链表?能直接读吗?该C++代码如何实现呢?
#include <vector>
#include<iostream>
#include <iomanip>
using namespace std;
class CTargetState//class declaration
{
public:
private:
struct m_strTargetPosition//笛卡尔坐标系位置
{
double m_dTargetPostionX;
double m_dTargetPostionY;
double m_dTargetPostionZ;
}
struct m_strTargetVelocity//速度
{
double m_dTargetVelocityX;
double m_dTargetVelocityY;
double m_dTargetVelocityZ;
}
struct m_strTargetAccelerate//加速度
{
double m_dTargetAccelerateX;
double m_dTargetAccelerateY;
double m_dTargetAccelerateZ;
}
typedef struct m_strTargetState//定义自用结构类型
{
struct m_strTargetPosition;
struct m_strTargetVelocity;
struct m_strTargetAccelerate;
}StruTargetState;
vector <StruTargetState> m_vTargetState;
};//endof class CTargetState 展开
1.结构体该定义在类内还是类外呢?另外调用的时候该怎么写呢,难道要写成CTargetState::m_vTargetState.m_strTargetPosition.m_dTargetPostionX;这样吗?
2.,向Vector中压数据该怎么写呢 m_vTargetState.pushback(m_vTargetState) 这样写吗?
3.如果我向vector中压了五个新的vector,然后想调用第三次压进去的vector的话,该如何调用呢?用链表?能直接读吗?该C++代码如何实现呢?
#include <vector>
#include<iostream>
#include <iomanip>
using namespace std;
class CTargetState//class declaration
{
public:
private:
struct m_strTargetPosition//笛卡尔坐标系位置
{
double m_dTargetPostionX;
double m_dTargetPostionY;
double m_dTargetPostionZ;
}
struct m_strTargetVelocity//速度
{
double m_dTargetVelocityX;
double m_dTargetVelocityY;
double m_dTargetVelocityZ;
}
struct m_strTargetAccelerate//加速度
{
double m_dTargetAccelerateX;
double m_dTargetAccelerateY;
double m_dTargetAccelerateZ;
}
typedef struct m_strTargetState//定义自用结构类型
{
struct m_strTargetPosition;
struct m_strTargetVelocity;
struct m_strTargetAccelerate;
}StruTargetState;
vector <StruTargetState> m_vTargetState;
};//endof class CTargetState 展开
2个回答
展开全部
#include <vector>
#include<iostream>
#include <iomanip>
using namespace std;
class CTargetState//class declaration
{
public:
struct m_strTargetPosition//笛卡尔坐标系位置
{
m_strTargetPosition(double x, double y, double z) :
m_dTargetPostionX(x), m_dTargetPostionY(y), m_dTargetPostionZ(z){}
double m_dTargetPostionX;
double m_dTargetPostionY;
double m_dTargetPostionZ;
};
struct m_strTargetVelocity//速度
{
m_strTargetVelocity(double x, double y, double z) :
m_dTargetVelocityX(x), m_dTargetVelocityY(y), m_dTargetVelocityZ(z){}
double m_dTargetVelocityX;
double m_dTargetVelocityY;
double m_dTargetVelocityZ;
};
struct m_strTargetAccelerate//加速度
{
m_strTargetAccelerate(double x, double y, double z) :
m_dTargetAccelerateX(x), m_dTargetAccelerateY(y), m_dTargetAccelerateZ(z){}
double m_dTargetAccelerateX;
double m_dTargetAccelerateY;
double m_dTargetAccelerateZ;
};
typedef struct m_strTargetState//定义自用结构类型
{
m_strTargetState(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3)
: m_stp(x1, y1, z1), m_stv(x2, y2, z2), m_sta(x3, y3, z3) {}
m_strTargetPosition m_stp;
m_strTargetVelocity m_stv;
m_strTargetAccelerate m_sta;
}StruTargetState;
vector <StruTargetState> m_vTargetState;
private:
};//endof class CTargetState
int main()
{
CTargetState::StruTargetState sts1(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0);
CTargetState::StruTargetState sts2(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9);
CTargetState ct;
ct.m_vTargetState.push_back(sts1);
ct.m_vTargetState.push_back(sts2);
cout<<ct.m_vTargetState[1].m_sta.m_dTargetAccelerateX<<endl;
cout<<ct.m_vTargetState[0].m_stp.m_dTargetPostionY<<endl;
return 0;
}
内部结构最好声明成公有,否则从外部无法访问。
我把你的成员变量变成公有是图简单,你可以写成员函数访问,一样的。
另外vector<vector<T>>相当于二维数据。比如:
vector<int> v1;
v1.push_back(1); v1.push_back(2); v1.push_back(3);
vector<int> v2;
v2.push_back(4);
vector<int> v3;
v3.push_back(5); v3.push_back(6);
vector<vector<int>> vv;
vv.push_back(v1);
vv.push_back(v2);
vv.push_back(v3);
相访问v3的元素,可以:
int res = vv[2][0]; // res = 5
访问v1的元素:
res = vv[0][2]; //res =3
#include<iostream>
#include <iomanip>
using namespace std;
class CTargetState//class declaration
{
public:
struct m_strTargetPosition//笛卡尔坐标系位置
{
m_strTargetPosition(double x, double y, double z) :
m_dTargetPostionX(x), m_dTargetPostionY(y), m_dTargetPostionZ(z){}
double m_dTargetPostionX;
double m_dTargetPostionY;
double m_dTargetPostionZ;
};
struct m_strTargetVelocity//速度
{
m_strTargetVelocity(double x, double y, double z) :
m_dTargetVelocityX(x), m_dTargetVelocityY(y), m_dTargetVelocityZ(z){}
double m_dTargetVelocityX;
double m_dTargetVelocityY;
double m_dTargetVelocityZ;
};
struct m_strTargetAccelerate//加速度
{
m_strTargetAccelerate(double x, double y, double z) :
m_dTargetAccelerateX(x), m_dTargetAccelerateY(y), m_dTargetAccelerateZ(z){}
double m_dTargetAccelerateX;
double m_dTargetAccelerateY;
double m_dTargetAccelerateZ;
};
typedef struct m_strTargetState//定义自用结构类型
{
m_strTargetState(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3)
: m_stp(x1, y1, z1), m_stv(x2, y2, z2), m_sta(x3, y3, z3) {}
m_strTargetPosition m_stp;
m_strTargetVelocity m_stv;
m_strTargetAccelerate m_sta;
}StruTargetState;
vector <StruTargetState> m_vTargetState;
private:
};//endof class CTargetState
int main()
{
CTargetState::StruTargetState sts1(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0);
CTargetState::StruTargetState sts2(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9);
CTargetState ct;
ct.m_vTargetState.push_back(sts1);
ct.m_vTargetState.push_back(sts2);
cout<<ct.m_vTargetState[1].m_sta.m_dTargetAccelerateX<<endl;
cout<<ct.m_vTargetState[0].m_stp.m_dTargetPostionY<<endl;
return 0;
}
内部结构最好声明成公有,否则从外部无法访问。
我把你的成员变量变成公有是图简单,你可以写成员函数访问,一样的。
另外vector<vector<T>>相当于二维数据。比如:
vector<int> v1;
v1.push_back(1); v1.push_back(2); v1.push_back(3);
vector<int> v2;
v2.push_back(4);
vector<int> v3;
v3.push_back(5); v3.push_back(6);
vector<vector<int>> vv;
vv.push_back(v1);
vv.push_back(v2);
vv.push_back(v3);
相访问v3的元素,可以:
int res = vv[2][0]; // res = 5
访问v1的元素:
res = vv[0][2]; //res =3
展开全部
你先说程序要干嘛啊 另外调用内部结构要加::的
追问
要把目标的位置信息建立成一个类,是.h文件,如果有操作还要写.cpp文件,方便主函数调用。这个类中将目标位置信息建立成vector,里面的不同结构体表示不同的信息,比如xyz三轴的位置速度加速度。目标每一拍的信息都压入一个vector中,但一共跑几拍事先是不知道的。该怎么写呢。。。
追答
看晕了 我的理解是不是记录目标在一个时间点的速度 加速度信息?
目标的移动谁来控制?
单说记录的事情呢 你就定义几个结构体 速度 加速度的 用struct就行 然后建一个state类 包含这些结构体 没必要用内部结构 而且c++也不需要用struct关键字了 都用class
给你举个例子
/*
位置参数类
*/
class position{
public:
double x;
double y;
double z;
};
/*
速度参数类
*/
class speed{
public:
double x_speed;
double y_speed;
double z_speed;
};
/*
状态
*/
class state{
public:
position pos;
speed sp;
};
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询