【发布时间】:2014-02-22 18:45:10
【问题描述】:
我知道必须有一种更好、更简单的方法来做我想做的事情,所以我很抱歉我缺乏编程知识。当我调用函数 printStructValue 时,我的程序崩溃了。我已经离开 cmets 来解释我的思考过程。
#include <iostream>
#include <vector>
using namespace std;
struct selection //vector array to tell me what is selected. ex:'w',5 is wall 5
{
char c;
int id;
}; vector<selection> Sel(20,selection());
struct walls //struct to hold wall data
{
int id;
int x,y,z;
int spriteState;
}; walls W[10];
struct floors //struct to hold floor data
{
int id;
int x,y,z;
}; floors F[10];
template <typename T,typename U>
T returnAnyArray(int st, T t,U u) //function that returns any type passed
{
if(st==1){t;} //if st==1, then return the first, walls W
if(st==2){u;} //if st==2, then return the second, floors F
}
template <typename T>
void printStructValue(T t, int d) //print any struct value
{
cout<<"passed:"<<t[d].x<<endl;
}
int main()
{
W[7].x=204; //init value
F[7].x= 73; //init value
//what I would like to happen is...
printStructValue( (returnAnyArray(1,W,F)),7); //W is returned and passed so W[7].x gets printed.
printStructValue( (returnAnyArray(2,W,F)),7); //F is returned and passed so F[7].x gets printed.
system("pause");
}
【问题讨论】:
-
如果您从 C++ 开始,模板不是一个简单的起点。可能你需要在墙壁和地板之间有一个共同的基类?但是模板似乎不需要。
标签: c++ arrays templates struct return