gpt4 book ai didi

c++ - 声明但不定义内部结构/类——C++ 是否合法?

转载 作者:可可西里 更新时间:2023-11-01 17:11:09 25 4
gpt4 key购买 nike

以下代码是否合法 C++?

class Foo
{
class Bar;

void HaveADrink(Bar &bar);
void PayForDrinks(Bar &bar);

public:
void VisitABar(int drinks);
};

class Foo::Bar
{
public:
int countDrinks;
};

void Foo::HaveADrink(Bar &bar)
{
bar.countDrinks++;
}
void Foo::PayForDrinks(Bar &bar)
{
bar.countDrinks = 0;
}
void Foo::VisitABar(int drinks)
{
Bar bar;
for (int i=0; i<drinks; i++) HaveADrink(bar);
PayForDrinks(bar);
}

Visual C++ 和 GCC 都接受它,但是代码对我来说有点奇怪,我不希望它被 future 的编译器拒绝。

尽管如此,该模式似乎对我减少编译时依赖性很有用——我经常用它来声明用于传递一些“上下文”(一堆变量)的结构,这些“上下文”在几个函数之间共享,这些函数都位于相同的 cpp 文件,这样我就不必在公共(public)接口(interface)中引入“上下文”定义。

最佳答案

向外界隐藏实现细节是合法的,而且确实有用。

关于c++ - 声明但不定义内部结构/类——C++ 是否合法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1564817/

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