2013-11-28 2 views
2

편집 : 문제는 #includes에서 서클을 만드는 것이 과장된 것 같습니다. 나는 필요한 것만 포함하고 처음 두 가지 오류를 해결했습니다.배열의 크기가 '초과'되었지만 배열이 작습니다.

그러나}, 나는 아직도 모두 버튼과 엘리베이터

그것은 각 오류의 두 가지가 있습니다에 대한 "지정된 여러 기본 생성자"를 얻을 수 있지만, 같은 위치에서 한 쌍 점 모두의 결말; 수업의

편집 : 두 번째 오류도 해결되었습니다. 빈 Class :: Class()를 제거했습니다. 그게 사용되지 않았어.

================= 오류가 발생합니다. "오류 C2148 : 배열의 전체 크기는 0x7fffffff 바이트를 초과해서는 안됩니다

객체 배열을 만드는 클래스 정의의 첫 번째 줄은 클래스 또는 배열의 크기에 관계없이이 오류를 제공합니다. "Elevator elevators [1];" Elevator 객체가 약 70 바이트인데도 오류가 발생하지만 int, 문자열 등의 배열은 매우 큰 경우에도 멈추지 않습니다.

코드에 무엇을 포함해야할지 잘 모르겠습니다. 이를 위해.

class Passenger; 
class Simulation{ 
    int test[10000];<-- no error 
    std::queues<int> q[10];<--- no error 
    Elevator e[1];<--- size error, but size of one Elevator is only 70 bytes 
} 

"시뮬레이션 : 엘리베이터가 정의되지 않은 클래스 엘리베이터를 사용합니다."라는 오류가 있지만 그 아래에서 초기화 된 것은 입니다. 또한 #included passenger.h가 있습니다. 나는 원래 벡터를 사용했지만 실제로는 더 많은 문제를 일으키고 있었고 크기가 일정하기 때문에 실제로 필요하지 않습니다.

추가 테스팅에서 내 개체 (Report) 중 하나가 오류를 표시하지 않지만 여러 벡터가 관련된 경우 더 큰 것으로 나타났습니다. . 추가 풀 엘리베이터 요청에 따라 정의 :

편집 (사실에 관계없이 코드에서 그들이

편집 곳 모두 엘리베이터 및 버튼에 대한 오류를 제공합니다 또한 버튼을 포함

class Elevator{ 
private: 
    int floor; 
    int floorGoal; 
    int answering; 
    int floorIdle; 
    bool goingUp; 
    int mode; 
    int nextMode; 
    int nextModeTime; 
    int numPassengers; 
    static const int maxPassengers = 8; 
    int passengers[maxPassengers]; 
    static const int moveTime = 15; 
    static const int boardTime = 3; 
    static const int leaveTime = 3; 
    static const int delayTime = 10; 
public: 
    Elevator(); 
    Elevator(int Floor = 1); 
    ~Elevator(); 
    bool IsFull() const; 
    bool IsEmpty() const; 
    void Update(int timeElapsed, int i, PassengerGenerator& gen, Report& r, Button b[], Elevator e[], std::queue<int> q[]); 
    friend class Simulation; 
}; 

, 이 같은 오류를 가지고 있지만 훨씬 간단하기 때문에

class Button{ 
private: 
    int answered; 
    bool pressed; 
    bool up; 
public: 
    Button(); 
    Button(int Floor = 1, bool Up = true); 
    ~Button(); 
    inline bool IsCalling() const{ return pressed && answered == -1;} 
    friend class Elevator; 
    friend class Simulation; 
}; 

내가 멀리 목록을 아래로 또 다른 오류가 발견이 일 동안은. 그것은 여러 defau 말한다 lt 생성자 및 버튼 모두에 대해 지정된 '생성자'입니다. 그러나 두 형식 모두 매개 변수가없는 매개 변수가 하나만있는 것으로 확인되었습니다. Class :: Class() {}

+3

엘리베이터 유형 정의하십시오. – ScarletAmaranth

+0

플랫폼 및 컴파일러는 무엇입니까? –

+0

문제는 실제로 정의되지 않은 클래스의 사용이라고 생각합니다. Elevator의 정의와 클래스와 관련된 위치를 포함하십시오. 시뮬레이션 – JSQuareD

답변

1

형식을 정의해야 데이터 멤버 e을 선언 할 수 있습니다. 유형을 선언했지만 정의하지 못했습니다.

첫 번째 오류

다소 오해의 소지가 있지만, 두 번째 오류는 매우 분명하다

error C2148: total size of array must not exceed 0x7fffffff bytes 
error C2079: 'Simulation::e' uses undefined class 'Elevator' 
+0

#include "elevator.h"와 클래스 엘리베이터가 모두 포함 된 클래스입니다. 무엇이 더 정의되어야 하는가? – user3046916

+0

그러면 헤더 사이에 순환 종속성이있을 것입니다. Elevator.h # 당신의 Simulation 클래스가 정의 된 소스 파일을 직접 또는 간접적으로 # 포함합니까? –

+0

불필요한 include를 제거하고 처음 두 개의 오류를 수정했습니다. 감사합니다. 여전히 두 개의 기본 기본 생성자가 있습니다. – user3046916

관련 문제