【请高手指教】在头文件里建了几个派生类 为何会出现一下问题
unit.h:
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
class parent
{
protected:
//
public:
__fastcall Shape();
virtual __fastcall ~Shape();
};
class child0:public parent
{
public:
__fastcall child0();
__fastcall ~child0();
};
class child1:public parent
{
public:
__fastcall child1();
__fastcall ~child1();
};
//------------------------------------------------------------------------
#endif
unit.cpp:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
//------------------------------------------------------------------------
__fastcall parent::parent(){
//do something
}
//------------------------------------------------------------------------
virtual __fastcall parent::~parent()
{
}
//------------------------------------------------------------------------
__fastcall child0::child0():
{
//do something
}
//------------------------------------------------------------------------
__fastcall child0::~child0()
{
}
//------------------------------------------------------------------------
__fastcall child1::child1():child()
{
//do something
}
//------------------------------------------------------------------------
__fastcall child1::~Shape1()
{
}
//------------------------------------------------------------------------
error:
[C++ Error] Unit1.h(34): E2303 Type name expected
[C++ Error] Unit1.cpp(24): E2171 Body has already been defined for function 'parent::parent()'
[C++ Error] Unit1.cpp(24): E2356 Type mismatch in redeclaration of 'parent::parent()'
[C++ Error] Unit1.h(38): E2344 Earlier declaration of 'parent::parent()'
[C++ Error] Unit1.cpp(25): E2451 Undefined symbol 'p'
[C++ Error] Unit1.cpp(28): E2092 Storage class 'virtual' is not allowed here
[C++ Error] Unit1.cpp(29): E2316 '_fastcall parent::~parent()' is not a member of 'parent'
[C++ Error] Unit1.cpp(32): E2092 Storage class 'virtual' is not allowed here
[C++ Error] Unit1.cpp(32): E2090 Qualifier 'parent0' is not a class or namespace name
[C++ Error] Unit1.cpp(32): E2040 Declaration terminated incorrectly
[2843 byte] By [
oasis92] at [2008-1-9]
大致改一下,能通过编译:
unit1.h
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
class parent
{
protected:
//
public:
__fastcall parent();
virtual __fastcall ~parent();
};
class child0:public parent
{
public:
__fastcall child0();
__fastcall ~child0();
};
class child1:public parent
{
public:
__fastcall child1();
__fastcall ~child1();
};
//------------------------------------------------------------------------
#endif
unit1.cpp:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
//------------------------------------------------------------------------
__fastcall parent::parent(){
//do something
}
//------------------------------------------------------------------------
__fastcall parent::~parent()
{
}
//------------------------------------------------------------------------
__fastcall child0::child0():parent()
{
//do something
}
//------------------------------------------------------------------------
__fastcall child0::~child0()
{
}
//------------------------------------------------------------------------
__fastcall child1::child1():parent()
{
//do something
}
//------------------------------------------------------------------------
__fastcall child1::~child1()
{
}
//------------------------------------------------------------------------
keiy at 2007-10-18 >

[C++ Error] Unit1.h(34): E2303 Type name expected//这条不知道,因为你没有给全代码,没法判断是出现在哪里的。
[C++ Error] Unit1.cpp(24): E2171 Body has already been defined for function 'parent::parent()' 和
[C++ Error] Unit1.h(38): E2344 Earlier declaration of 'parent::parent()'//都是因为你声明不对引起的。具体你声明的内容写的很短。建议你根据错误指向的内容自己仔细检查下就应该没问题了。
[C++ Error] Unit1.cpp(25): E2451 Undefined symbol 'p' //这个p应该是你没有声明。而且你给出的代码里没有p这个东西,我没法判断是什么。
[C++ Error] Unit1.cpp(29): E2316 '_fastcall parent::~parent()' is not a member of 'parent' //这句话的意思是你并没有在parent中声明~parent()这个析构函数。请楼主仔细检查下。
[C++ Error] Unit1.cpp(32): E2090 Qualifier 'parent0' is not a class or namespace name
//字面意思明白了吧。parent0并不是一个类。我不知道这个问题出在何处。因为从你给的代码中并没有使用parent0这个词。
后面的那条[C++ Error] Unit1.cpp(32): E2040 Declaration terminated incorrectly //没法判断。楼主给的程序太短。
还有,楼主给的程序太乱了,例如:
__fastcall child1::~Shape1() <--这个析构函数哪里来的。没有构造函数怎么来的析构函数。
{
}
//--