这段代码报错应输入类型说明符,怎么修改#include <iostream> using namespace std; class Product { public: }; class CreateProduct : public Product { public: CreateProduct(); ~CreateProduct(); private: }; CreateProduct::CreateProduct() { } CreateProduct::~CreateProduct() { } class Factory { public: virtual ~Factory() = default; virtual Product* CreateProduct() = 0; Factory(); }; class CreateFactory : public Factory { public: ~CreateFactory(); CreateFactory(); Product* CreateProduct(); private: }; Factory::Factory() { } Factory::~Factory() { } CreateFactory::CreateFactory() { cout << "CreateFactory....." << endl; } CreateFactory::~CreateFactory() { cout << "~CreateFactory....." << endl; } Product* CreateFactory::CreateProduct() { return new CreateProduct(); } int main(int argc, char* argv[]) { Factory* fac = new CreateFactory(); Product* p = fac->CreateProduct(); return 0; }
时间: 2024-02-21 12:00:29 浏览: 65
#include_iostream.h_
4星 · 用户满意度95%
这段代码的编译错误是因为在 Factory 类的构造函数中没有指定类型说明符。在 C++11 之前,如果一个类的构造函数没有指定类型说明符,那么默认是一个普通的函数,而不是一个构造函数。因此,编译器会报错。
要解决这个问题,可以在 Factory 类的构造函数声明中指定类型说明符,例如:
```cpp
Factory::Factory() {}
```
这里我们省略了类型说明符,因为默认是构造函数。如果你想显式指定,可以这样写:
```cpp
Factory::Factory() noexcept {}
```
这里我们使用了 noexcept 指定了该构造函数不会抛出异常。这样就可以解决编译错误了。
阅读全文