MySQL 데이터베이스를 쿼리하는 응용 프로그램을 만들고 있습니다.같은 이름의 여러 클래스 객체 만들기? C++
std::map<int, Car*> m_car;
typedef std::pair<int, Car*> m_car_pair;
차 개체 그래서 우선 I 당겨 car_id 중 하나는 8 개 개의 파라미터로 구성된다
는 이런 결과는 (대응하는 쌍을 갖는) 맵에 저장할 자동차 ID를 키로 사용하면 전체 자동차 객체를지도의 값으로 저장하려고합니다. (나는 이것이 car_id를 두 번 저장하는 나를 감추고 있다는 것을 알고 있지만, 그 순간 나는 그것을 신경 쓰지 않는다.)
어쨌든 여기 내 쿼리 코드입니다 : 내가지도를 반복 당겨 ID의 (지도 키)을 모두 그들은 달랐다 확인하기 위해 간단한 테스트 기능을 만든이 후
void DatabaseController::getAll(QString query_string)
{
// Console log message
std::cout << "Querying Database" << std::endl;
/// Declare SQL query and pass function parameter 'query'
QSqlQuery query(query_string);
// execute the query
query.exec();
int count = 0;
// While results are coming in
while(query.next())
{
// Call car constructor passing all parameters
Car car(query.value(count).toInt(), query.value(count+1).toString(), query.value(count+2).toString(), query.value(count+3).toString(),
query.value(count+4).toInt(), query.value(count+5).toInt(), query.value(count+6).toInt(), query.value(count+7).toString());
if (car.getcarID() != 0)
{
m_car_records.insert(m_car_pair(car.getcarID(), &car));
}
}
std::cout << "Database query finished" << std::endl;
(즉, 함수는 일) 그리고 그들은 있었다.
하지만 그것은지도에 있어야하는 자동차 객체의 자동차에서 액세서리 기능을 호출 할 수 있어야한다는 것입니다.
void DatabaseController::test()
{
m_car_records_iterator = m_car_records.begin();
for(unsigned int i = 0; i < m_car_records.size(); i++)
{
car *test = m_car_records_iterator->second;
std::cout << test->toString() << std::endl;
m_car_records_iterator++;
}
}
이 결과의 정확한 수는 있지만 그들은 모두 차 즉, 동일 보여 주었다 : 그래서지도와 cout << car.toString();
(자동차 클래스에서 문자열 함수에 대한 간단한)을 반복 같은 간단한 테스트 기능을 사용 지도의 모든 항목에 추가 된 객체는
사용하는 어떤 방법이 있나요 ...
내 질문은 같은 (쿼리에 의해 마지막으로 발견 된 레코드의 값)입니다 이 구조체는 현재 내 질의에 대해이 클래스 obj를 만들고 추가 할 수 있습니다. 물론 각 인스턴스에 대한 동일한 이름을 사용하여 while 루프 내지도에 ects, 나는 얼마나 많은 결과가 반환되는지 알 수없고 각 객체에 대해 클래스 객체를 선언하지만 동일한 이름을 사용하는 것은 단지 같은 때마다 값을 실제로 바꾸지 않을 때마다 ... 적어도 그것이 내가 생각하는 것입니다. 당신은 정의되지 않은 동작가 발생하는
로컬 스택 변수 'car'의 주소를 맵에 반복해서 삽입하면 원하는 것을 얻지 못할 것입니다. 나는 거기에서 시작할 것입니다. – WhozCraig