相关疑难解决方法(0)

801
推荐指数
5
解决办法
49万
查看次数

“class classname* funcname(void)”在 C++ 中是什么意思?

我在头文件中找到了以下代码,而“BOOT”类在另一个头文件中定义。

class BOOT* boot(void);
Run Code Online (Sandbox Code Playgroud)

它看起来像一个函数的声明,它以class.

c++

35
推荐指数
4
解决办法
2340
查看次数

枚举成员与类名冲突

我最近在处理一个小项目时产生了一系列错误的错误.这基本上是导致它的代码:

#include <memory>

enum derivedtype {B, C};

//abstract class
class A{};

class B : public A
{};
class C : public A
{};

int main()
{
  {
    std::unique_ptr<A> myb(new B);
    std::unique_ptr<A> myc(new C);
  }
}
Run Code Online (Sandbox Code Playgroud)

这产生了这个编译错误:

enumclasserror.cpp: In function ‘int main()’:
  enumclasserror.cpp:15:30: error: ‘B’ does not name a type
  std::unique_ptr<A> myb(new B);
                          ^
  enumclasserror.cpp:16:30: error: ‘C’ does not name a type
  std::unique_ptr<A> myc(new C);
Run Code Online (Sandbox Code Playgroud)

修复是在新的后添加class关键字:

std::unique_ptr<A> myb(new class B);
Run Code Online (Sandbox Code Playgroud)

现在,枚举被包含在原始代码中的abstact类的头文件中(这使得它更难以发现),但是从未明白过; 我原本无法想象枚举的成员会导致实例的创建失败.它花了我几个小时来找到那个bug.任何人都可以向我解释为什么会这样吗?新的内容对枚举有意义吗?

PS:这个错误是由一个使用clang的同事发现的,它提出了class关键字.正如你所看到的,我的Ubuntu上的标准c ++编译器没有...

c++ enums class derived abstract

0
推荐指数
1
解决办法
1194
查看次数

标签 统计

c++ ×3

abstract ×1

class ×1

derived ×1

enums ×1

struct ×1

typedef ×1