如何解决这个问题呢? [英] How to solve this problem?

查看:80
本文介绍了如何解决这个问题呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是我项目的类似代码:

首先我在两个文件中定义两个类:

//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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆