如何解决这个问题呢? [英] How to solve this problem?
问题描述
以下是我项目的类似代码:
首先我在两个文件中定义两个类:
//ClassA.h
#pragma一次
#include" ClassB.h"
class ClassA
{
公开:
ClassA(无效){};
public:
~ClassA(void){};
};
//ClassB.h
#pragma一次
#include" ClassA.h"
class ClassA;
class ClassB
{
public:
ClassB(void){};
public:
~ClassB(void){};
void DoSomething(ClassA obj) {};
};
然后主要功能:
//main.cpp
#include" ClassB.h"
int main(无效)
{
返回0;
}
当我在VS2005中编译这些代码时,我得到1个错误:
错误1错误C2027:使用未定义类型''ClassA''d:\\ \\v-james\te st $ / $
code\consoledemo\consoledemo\classb.h 12
所以,有人在这里请说些什么,谢谢。
Following are similar codes of my project:
At first I define two classes in two files:
//ClassA.h
#pragma once
#include "ClassB.h"
class ClassA
{
public:
ClassA(void){};
public:
~ClassA(void){};
};
//ClassB.h
#pragma once
#include "ClassA.h"
class ClassA;
class ClassB
{
public:
ClassB(void){};
public:
~ClassB(void){};
void DoSomething(ClassA obj){};
};
Then main function:
//main.cpp
#include "ClassB.h"
int main(void)
{
return 0;
}
When I complie these codes in VS2005, I get 1 error:
Error 1 error C2027: use of undefined type ''ClassA'' d:\v-james\test
code\consoledemo\consoledemo\classb.h 12
So, somebody here please say something about this, thanks.
推荐答案
ClassA.h不应包含ClassB.h
" Hooyoo D'μà£o >
"
ClassA.h should not include the ClassB.h
"Hooyoo D′μà£o
"
以下是我项目的类似代码:
首先我在两个文件中定义两个类:
//ClassA.h
#pragma一次
#include" ClassB.h"
class ClassA
{
public:
ClassA(无效){};
公开:
~ClassA (无效){};
};
//ClassB.h
#pragma一次
#include" ClassA.h"
class ClassA;
class ClassB
{
public:
ClassB(void){};
public:
~ClassB(void){};
void DoSomething(ClassA obj){};
};
然后主要功能:
//main.cpp
#include" ClassB.h"
int main(无效)
{
返回0;
}
当我在VS2005中编译这些代码时,我得到1个错误:
错误1错误C2027:使用undef类型''ClassA''d:\v-james \ test
code\consoledemo\consoledemo\classb.h 12
所以,有人请说一下这个,谢谢。
Following are similar codes of my project:
At first I define two classes in two files:
//ClassA.h
#pragma once
#include "ClassB.h"
class ClassA
{
public:
ClassA(void){};
public:
~ClassA(void){};
};
//ClassB.h
#pragma once
#include "ClassA.h"
class ClassA;
class ClassB
{
public:
ClassB(void){};
public:
~ClassB(void){};
void DoSomething(ClassA obj){};
};
Then main function:
//main.cpp
#include "ClassB.h"
int main(void)
{
return 0;
}
When I complie these codes in VS2005, I get 1 error:
Error 1 error C2027: use of undefined type ''ClassA'' d:\v-james\test
code\consoledemo\consoledemo\classb.h 12
So, somebody here please say something about this, thanks.
我知道在这些类似的代码中ClassA.h不需要包含classb.h,
但是在我的真实项目中我需要这样做。
我可以用其他方式解决这个问题吗?
?D?ù?à?Dò写道:
I know in these similar codes ClassA.h no need to include classb.h,
but in my real project I need do this.
Can I solve this problem in other ways?
?D?ù?à±?Dò wrote:
ClassA.h不应包括ClassB.h
Hooyoo D'μà£o
"
ClassA.h should not include the ClassB.h
"Hooyoo D′μà£o
"
以下是我项目的类似代码:
首先我在两个文件中定义两个类:
//ClassA.h
#pragma一次
#include" ClassB.h"
class ClassA
{
public:
ClassA(无效){};
公开:
~ClassA (无效){};
};
//ClassB.h
#pragma一次
#include" ClassA.h"
class ClassA;
class ClassB
{
public:
ClassB(void){};
public:
~ClassB(void){};
void DoSomething(ClassA obj){};
};
然后主要功能:
// main。 cpp
#include" ClassB.h"
int main(无效)
{
返回0;
}
当我在VS2005中编译这些代码时,我得到1个错误:
错误1错误C2027:使用未定义类型''ClassA''d:\v-james \ test
code\consoledemo\consoledemo\classb.h 12
所以,有人在这里请说些什么,谢谢。
Following are similar codes of my project:
At first I define two classes in two files:
//ClassA.h
#pragma once
#include "ClassB.h"
class ClassA
{
public:
ClassA(void){};
public:
~ClassA(void){};
};
//ClassB.h
#pragma once
#include "ClassA.h"
class ClassA;
class ClassB
{
public:
ClassB(void){};
public:
~ClassB(void){};
void DoSomething(ClassA obj){};
};
Then main function:
//main.cpp
#include "ClassB.h"
int main(void)
{
return 0;
}
When I complie these codes in VS2005, I get 1 error:
Error 1 error C2027: use of undefined type ''ClassA'' d:\v-james\test
code\consoledemo\consoledemo\classb.h 12
So, somebody here please say something about this, thanks.
" Hooyoo D'μà£o
"
"Hooyoo D′μà£o
"
以下是我项目的类似代码:
首先我在两个文件中定义两个类:
//ClassA.h
#pragma一次
#include" ClassB.h"
class ClassA
{
public:
ClassA(无效){};
公开:
~ClassA (无效){};
};
//ClassB.h
#pragma一次
#include" ClassA.h"
Following are similar codes of my project:
At first I define two classes in two files:
//ClassA.h
#pragma once
#include "ClassB.h"
class ClassA
{
public:
ClassA(void){};
public:
~ClassA(void){};
};
//ClassB.h
#pragma once
#include "ClassA.h"
在这里,你包括ClassA.h。在ClassB.h中,并包括ClassB.h和ClassB.h。在
ClassA.h中。我不太清楚链接问题。可能有一个
可以更清楚地解释它。
但我确信只有一个包含工作,似乎
是包含ClassB.h的在ClassA.h中,当您在下面声明class ClassA
时。
Here, you include "ClassA.h" in "ClassB.h", and include "ClassB.h" in
"ClassA.h". I am not quite clear about the link issues.Maybe some one
could explain it more clearly.
But I am sure that there is only one "include" works, and it seems to
be the include "ClassB.h" in "ClassA.h", as you declare "class ClassA"
below.
class ClassA;
class ClassA;
这里,你预先声明了classA.It告诉编译,ClassA
是某个地方定义的类,所以你可以声明在这个文件范围内的ClassA实例中,ClassB实例。但是ClassB对ClassA一无所知。
Here, you pre-declare the classA.It just tell the compile that ClassA
is a class defined somewhere, so you can declare instances of ClassA in
this file scope.But ClassB doesn''t know anything about ClassA.
class ClassB
{
public:
ClassB(无效){};
public:
~BlassB( void){};
void DoSomething(ClassA obj){};
class ClassB
{
public:
ClassB(void){};
public:
~ClassB(void){};
void DoSomething(ClassA obj){};
当你定义成员函数Dosometing时,你只知道ClassA是一个类而不是
一个类,但仅此而已。访问classA的任何成员将是
undefined。当函数发生时,编译不知道如何创建ClassA的临时对象,如它没有定义。
你可以在这里使用ClassA *进行编译,但你仍然不能通过指针访问任何ClassA成员。
When you define the member function Dosometing, you just know ClassA is
a class but nothing more. Access to any member of the classA will be
undefined.When the function takes place, the compile does not know how
to create a temporary object of ClassA, as "it was not defined".
You could use ClassA * here just for compile, but you still can''t
access any member of ClassA through the pointer.
};
然后主要功能:
//main.cpp
#include" ClassB.h"
int main(无效)
{
返回0;
}
当我在VS2005中编译这些代码时,我得到1个错误:
错误1错误C2027:使用undefined输入''ClassA''d:\v-james \ test
code\consoledemo\consoledemo\classb.h 12
所以有人在这里请说些什么,谢谢。
};
Then main function:
//main.cpp
#include "ClassB.h"
int main(void)
{
return 0;
}
When I complie these codes in VS2005, I get 1 error:
Error 1 error C2027: use of undefined type ''ClassA'' d:\v-james\test
code\consoledemo\consoledemo\classb.h 12
So, somebody here please say something about this, thanks.
这篇关于如何解决这个问题呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!