使用抽象类C+进行单独编译+; 关于在C++中用抽象类构建一个项目,我有个问题。
假设在头文件中有一个抽象类A,然后在cpp文件中有一个类B,用于从类A创建对象。到目前为止,我们有: A.h类,B.cpp类使用抽象类C+进行单独编译+; 关于在C++中用抽象类构建一个项目,我有个问题。,c++,oop,C++,Oop,假设在头文件中有一个抽象类A,然后在cpp文件中有一个类B,用于从类A创建对象。到目前为止,我们有: A.h类,B.cpp类 Class_B::myFunc() { ... } 在Class_B.cpp文件中,我包含了头类_A.h 现在我想在主文件中创建类_B的对象,例如:main.cpp。我在main.cpp中添加了头类_A.h,在编译时,我得到的“Class_B”未在此范围内声明为错误。所有文件都在同一目录中。我不太确定如何解决这个问题,或者我是否正确使用了抽象类。我在网上找到的所有示
Class_B::myFunc()
{
...
}
在Class_B.cpp文件中,我包含了头类_A.h
现在我想在主文件中创建类_B的对象,例如:main.cpp。我在main.cpp中添加了头类_A.h,在编译时,我得到的“Class_B”未在此范围内声明为错误。所有文件都在同一目录中。我不太确定如何解决这个问题,或者我是否正确使用了抽象类。我在网上找到的所有示例都是这样做的:在main.cpp中定义Class_B,而不为Class_B创建单独的cpp文件
例如:
抽象类:Car.h
抽象类的实例:Toyota.cpp
main.cpp:
#include 'Car.h'
...
Toyota new_car = new Toyota(...);
只需要组织你的代码。关于如何实现这一点没有硬性规定,但通常在头文件(.h或.hpp)中定义类,并在源文件(.cpp)中实现类。在这种情况下,我将: A.h类
class Class_A
{
public:
virtual void myFunc() = 0; // Class_A is abstract
...
}
B.h类
#include "Class_A.h"
class Class_B : public Class_A
{
public:
void myFunc();
...
}
B.cpp级
Class_B::myFunc()
{
...
}
main.cpp
#include "Class_B.h"
int main()
{
Class_B myClassB;
myClassB.myFunc();
...
return 0;
}
当然,您需要将所有源文件正确地提供给编译器,在本例中至少是Class_B.cpp和main.cpp。您必须声明您想要使用的任何文件。您还应该将
Class_B.cpp
与Class_B.h
配对,其中您只声明.cpp
文件中定义的内容。然后,您应该在main.cpp
文件中包含。在Class_B.h中定义Class_B,并在main中包含。cpp@Fureeish六羟甲基三聚氰胺六甲醚?Class_B应该是Class_A的一个实例。例如,我们有一个抽象类Car,那么在这个场景中Class_B应该是Toyota。所以,我不太清楚为什么我们需要为CaseSub B创建另一个头文件,当CaseJavaA应该覆盖这个文件时?@ YANO我上面说的,我猜可以是对你的响应,你可以在一个单独的C++文件中实现CaseBub,但是如果你想在另一个文件中使用它,你必须声明它,通常在.h文件中。嘿!谢谢,成功了。