gpt4 book ai didi

c++ - 结构前向声明编译失败

转载 作者:IT老高 更新时间:2023-10-28 21:41:12 24 4
gpt4 key购买 nike

我有以下代码,但编译器说 sender_wrapper 是未定义的,即使我转发了它。我不能对结构进行前向声明吗? (用VS2003编译)

struct send_wrapper;

struct IPSend
{
IPSend::IPSend(const send_wrapper& sender) : _sender(sender) {}

void IPSend::operator()(const std::string& msg)
{
if (!msg.empty())
_sender.send(msg);
}

send_wrapper _sender; //error C2079: 'IPSend::_sender' uses undefined struct 'send_wrapper'

};

struct send_wrapper
{
std::auto_ptr<tcp_server> server;

};

最佳答案

类型的前向声明只能用于解析涉及该类型的指针引用的声明。

在类型被完全定义之前,编译器对类型一无所知;例如它有哪些成员,或者它有多大。因此,您不能将它用作结构的按值成员,因为编译器不知道使它有多大,或者它的构造函数和析构函数是否是公共(public)的。另一方面,您可以自由地执行 send_wrapper *_p_sender; 之类的操作,因为指向结构的指针总是相同的大小。但是您仍然无法访问其成员函数等。

关于c++ - 结构前向声明编译失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5026655/

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