如何在程序中出现错误之前修复丢失';' '*'?
How can I fix missing ';' before '*' error in my program?
我尝试创建MyWindowSplitter
类,并将CView类派生的另一个新类作为MySplitter
类中的运行时类。但当我试图编译时,我在GetDocument
函数的MyProjectView.h
中遇到了这些错误:
Error 1
error C2143: syntax error : missing ';' before '*'
Error 2
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
问题在哪里?我该如何解决?
//MySplitter.cpp
#include "StdAfx.h"
#include "MySplitter.h"
#include "SplitDemoSixView.h"
#include "TestView.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
CMySplitter::CMySplitter(void)
{
}
CMySplitter::~CMySplitter(void)
{
}
void CMySplitter::ChangeViewClass(CRuntimeClass* pNewView)
{
m_pDynamicViewClass = pNewView;
}
void CMySplitter::DeleteView(int row, int col)
{
CView* pView = (CView*)GetDlgItem(IdFromRowCol(row, col));
if(pView->IsKindOf(RUNTIME_CLASS(CSplitDemoSixView)))
{
ChangeViewClass(RUNTIME_CLASS(CSplitDemoSixView));
}
else
{
if(pView->IsKindOf(RUNTIME_CLASS(CTestView)))
{
ChangeViewClass(RUNTIME_CLASS(CTestView));
}
}
CSplitterWnd::DeleteView(row, col);
}
//TestView.cpp drived from CView
#include "stdafx.h"
#include "SplitDemoSix.h"
#include "TestView.h"
#include "SplitDemoSixDoc.h"
#include "SplitDemoSixView.h"
// CTestView
IMPLEMENT_DYNCREATE(CTestView, CView)
CTestView::CTestView()
{
}
CTestView::~CTestView()
{
}
BEGIN_MESSAGE_MAP(CTestView, CView)
END_MESSAGE_MAP()
// CTestView drawing
void CTestView::OnDraw(CDC* pDC)
{
CDocument* pDoc = GetDocument();
// TODO: add draw code here
}
// CTestView diagnostics
#ifdef _DEBUG
void CTestView::AssertValid() const
{
CView::AssertValid();
}
#ifndef _WIN32_WCE
void CTestView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
#endif
#endif //_DEBUG
// CTestView message handlers
问题就在这里:
//MyProjectView.h
#pragma once
#include "resource.h"
#include "MySplitter.h"
class CSplitDemoSixView : public CFormView
{
protected: // create from serialization only
CSplitDemoSixView();
DECLARE_DYNCREATE(CSplitDemoSixView)
public:
enum{ IDD = IDD_SPLITDEMOSIX_FORM };
// Attributes
public:
//ERROR PERFORMS IN THIS FUNCTION:
CSplitDemoSixDoc* GetDocument();
// Operations
public:
// Overrides
public:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual void OnInitialUpdate();
...
您需要CDocument派生类的前向声明:
// Attributes
public:
//ERROR PERFORMS IN THIS FUNCTION:
class CSplitDemoSixDoc;
CSplitDemoSixDoc* GetDocument();
相关文章:
- C++程序错误:malloc():内存损坏
- C++ Windows 凭据提供程序错误屏幕
- 程序错误地读取了二进制文件的一个字节
- Cmake无法在qt-creater/collect2上编译简单的测试程序:错误:ld
- C 程序错误
- SDL 应用程序错误:“if”之前应为非限定 id
- C++程序错误
- Apache IGNITE编译ODBC驱动程序错误
- 二进制搜索树操作程序错误:分割故障(核心倾倒)
- Cygwin1.dll c++ 应用程序错误
- 无法编译任何C++程序;错误:未知类型名称'uint8_t'
- 带有结构和指针的程序错误(结构,C++)
- 矩阵运算C++运算符重载程序错误
- ilmerge后C /CLI应用程序错误
- SDL 2.0-无效的呈现程序错误
- 如何使用 C# 在网页 asp.net 显示 C 程序错误
- OPENCV:image_proc中的 PCA 应用程序错误
- C++程序错误 - 虚拟析构函数
- LNK2020 C 程序错误
- 程序错误,由于在VS2010中使用std::unique_ptr