나는 프로그래밍에 대한 지식이 부족하여 유감이므로 더 노력하고 쉽게 할 수 있다는 것을 알고 있습니다. printStructValue 함수를 호출하면 프로그램이 중단됩니다. 나는 내 사고 과정을 설명하기 위해 의견을 남겼습니다.구조체의 배열을 반환하는 함수를 만드는 방법
#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++로 시작한다면 템플릿은 쉬운 시작점이 아닙니다. 아마 당신은 벽과 바닥 사이에 공통의 기본 클래스를 가질 필요가 있을까요? 그러나 템플릿은 필요하지 않습니다. – mpromonet