gpt4 book ai didi

c++ - 作为函数参数和返回值的不完整类型

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

以下代码compiles successfully both with clang++ 5.0.0 and g++ 7.2 (使用 -std=c++17 -Wall -Wextra -Werror -pedantic-errors -O0 编译标志):

struct Foo;

struct Bar
{
Foo get() const;

void set(Foo);
};

struct Foo
{
};

Foo Bar::get() const
{
return {};
}

void Bar::set(Foo)
{
}


int main()
{
Bar bar{};

(void)bar.get();
bar.set(Foo{});
}

使用不完整类型作为函数参数和返回值是否有效? C++ 在上面说了什么?

最佳答案

在函数定义中,您不能使用不完整的类型:[dcl.fct]/12 :

The type of a parameter or the return type for a function definition shall not be an incomplete (possibly cv-qualified) class type in the context of the function definition unless the function is deleted.

但是函数声明 没有这样的限制。当你定义 Bar::getBar::set 时,Foo 是一个完整的类型,所以程序没问题。

关于c++ - 作为函数参数和返回值的不完整类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47817012/

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