현재 코드의 테이블 형식을 추가해야합니다. 아래 코드는 다소 간단한 버전입니다.C++의 테이블 형식에 대한 제안
class A {
public:
A():x(0) {
} int getValue() {
return x;
}
private:
int x;
};
class B {
public:
B():y(0) {
} int getValue() {
return y;
}
private:
int y;
};
class C {
public:
C():z(0) {
} int getValue() {
return z;
}
private:
int z;
};
class D {
public:
D(A x, B y, C z) {
a = x;
b = y;
c = z;
} A getA() {
return a;
}
B getB() {
return b;
}
C getC() {
return c;
}
private:
A a;
B b;
C c;
};
typedef enum {
TABLE_A = 0,
TABLE_B,
TABLE_C,
TABLE_D,
TABLE_MAX
} table_index;
typedef struct tableInfo_tag {
table_index id, D d;
} tableInfo;
tableInfo gtable[table_index::TABLE_MAX] = {
{TABLE_A, {1, 2, 3}},
{TABLE_A, {4, 5, 6}},
{TABLE_A, {7, 8, 9}}
}
하지만 어떻게 든 나는 클래스 D의 값을 생성자를 받아 들일 수 없다. 내가 값의 집합의 큰 범위를 줄 수 있고 특정 조건에 따라 집합을 얻을 수있는이 테이블 형식이 필요해 ... 난 C + + 전문가가 아니므로 진행 방법에 대한 모든 입력 또는 다른 아이디어/입력 그건 그것의 크기를 지정해야하는 이유 -
typedef struct tableInfo_tag {
table_index id;
int d_len;
D d[8];
} tableInfo;
tableInfo gtable[TABLE_MAX] = {
{TABLE_A, 2, {D(A(),B(),C()),D()}}
};
여기서 d는 배열입니다 ^^^ 있지만 정적으로 할당되어야한다), 재미 다시 쓰기 일부 다했다
여기서 (!)'table_index' 유형은 정의되어 있습니까? 'typedef tableInfo_tag {...} tableInfo;'도 컴파일하지 않습니다. 실제 코드를 보여주십시오. BTW : 당신의 문제는 단순한 구조체를 사용하는 것으로 해결할 수 있다고 생각합니다. 이전의 C++ 표준 하에서조차도 쉽게 {}} 목록에서 초기화 할 수 있기 때문입니다. –
의견을 주셔서 감사합니다. 정정되었습니다. 불행히도 나는 큰 프로젝트 코드의 일부이기 때문에 원래 코드 (이 부분을 작성했지만)를 보여줄 수 없다. 방금 기존 C++ 코드에 테이블 버전을 추가하려고 했으므로 클래스가 선호됩니다. 클래스 D는 이미 정의되어 있습니다. 그래서 참조해야합니다. D 값의 테이블을 추가하는 것이 가장 좋습니다. – pdk
코드를 읽는 것이 매우 어렵다는 것을 추가해야합니다. 변수와 의미있는 이름을 지정하고 컴파일러가 아닌 읽기 전용 코드를 작성해야합니다. – idoby