gpt4 book ai didi

引用下面定义的结构的 C++ 头文件

转载 作者:行者123 更新时间:2023-11-28 06:15:47 27 4
gpt4 key购买 nike

处理这种情况的最佳做法是什么?

class A {
private:
std::vector<B> derp;
public:
struct B { ... };
void foo(B b);
}

(问题是这段代码会说“错误:使用未声明的标识符‘B’”我想我可以通过做类似的事情来解决问题

class A {
public:
struct B { ... };
void foo(B b);
private:
std::vector<B> derp;
}

但这看起来很奇怪而且不是正确的解决方案。另外作为旁注,如果我要写那个,我应该这样写吗?

struct A {
struct B { ... };
void foo(B b);

private:
std::vector<B> derp;
}

最佳答案

您可以使用 B 的前向声明在声明之前 derp如果你不想移动 B 的定义在声明之前 derp .

class A {
public:
struct B;
private:
std::vector<B> derp;
public:
struct B { ... };
void foo(B b);
};

但是,从物理布局的角度来看,public类的一部分应该在其 private 之前部分。你想要 public用户首先看到的部分。

鉴于此,我认为使用它会更好:

class A {
public:
struct B { ... };
void foo(B b);
private:
std::vector<B> derp;
};

这解决了 B 的问题未在声明成员变量之前声明/定义 derp .它还将 public private 前面的部分部分。

关于引用下面定义的结构的 C++ 头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30357806/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com