본문 바로가기
개발아닌개발/C,C++

[오류] MFC - warning C4183: 'GetDocument': 반환 형식이 없습니다. 'int'를 반환하는 멤버 함수로 간주됩니다.

by 불청객 2022. 4. 11.
반응형

visual studio 2008

MFC

 

 

 

 

 

SDI 로 생성하여, CSplitterWnd 를 사용하여 분할할 예정이였으나 코드 몇자 쓰지도 않았는데 오류발생

 

오류가 검출되는 (17)번째 라인은 C~View 클래스의 C~Doc* GetDocument() const;

 

더보기

error C2143: 구문 오류 : ';'이(가) '*' 앞에 없습니다.

error C4430: 형식 지정자가 없습니다. int로 가정합니다. 참고: C++에서는 기본 int를 지원하지 않습니다.

error C4430: 형식 지정자가 없습니다. int로 가정합니다. 참고: C++에서는 기본 int를 지원하지 않습니다.

warning C4183: 'GetDocument': 반환 형식이 없습니다. 'int'를 반환하는 멤버 함수로 간주됩니다.

 

 

 

 

 

 

Test 라는 이름의 프로젝트 생성 후, 작성한 코드는 아래와 같다.

 

창분할을 위해 프로젝트 생성 당시에, 창분할을 체크했던 터라

추가없이 기존에 생성되어 있던 OnCreateClient()에 코드 작성

창분할 체크를 안했다면 속성에서 추가할것. 임의로 작성x

 

// MainFrm.cpp
//
#include "stdafx.h"
#include "Test.h"
#include "MainFrm.h"
#include "TestView.h"
//


BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
	CCreateContext* pContext)
{
	//return m_wndSplitter.Create(this,
	//	2, 2,               // TODO: 행 및 열의 개수를 조정합니다.
	//	CSize(10, 10),      // TODO: 최소 창 크기를 조정합니다.
	//	pContext);

	if (!m_wndSplitter.CreateStatic(this, 1, 2))
	{
		TRACE0("Fail to create splitter.\n");
		return FALSE;
	}

	m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CTestView), CSize(300, 300), pContext);
	m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CTestView), CSize(300, 300), pContext);

	return TRUE;
}

 

 

 

 

 

 

 

 

 

 

해결방안

include 할때, ~Doc.h를 ~View.h 보다 먼저 작성할것

 

.

#include "TestDoc.h" 

#include "TestView.h" 

.

// MainFrm.cpp
//
#include "stdafx.h"
#include "Test.h"
#include "MainFrm.h"
#include "TestDoc.h"
#include "TestView.h"
//
728x90
반응형

댓글