【问题标题】:error ctor is not defined错误 ctor 未定义
【发布时间】:2011-12-07 14:56:16
【问题描述】:

我有以下代码可以在 Linux 上运行,但不能在 Windows(VS2008) 上运行

URI(): Poco::URI::URI();

我收到以下错误:

error C2039: '{ctor}' : is not a member of 'Poco::URI'
error C2437: 'URI': already initialized

我对以下内容进行了以下更改:

URI(){ Poco::URI::URI(); }

这两行代码意思一样吗?为什么第一行代码不能在 Windows 上运行?

编辑: 我正在使用 Poco 库,所以这是我的代码:

#include Poco/URI.h
class URI : public Poco::URI
{
public:
    URI(): Poco::URI::URI(){}
};

Poco/URI.h

namespace Poco {

class URI
{
public:
    URI::URI():
_port(0){}
private:
unsigned short _port;
};

【问题讨论】:

  • 发布更多上下文代码。

标签: c++ windows constructor poco-libraries


【解决方案1】:

不,它们的意思不同。后者在URI 构造函数中创建一个临时的匿名Poco::URI::URI 对象。

【讨论】:

  • “在构造函数中声明一个函数”——它调用一个函数(可能是另一个类的 ctor),而不是“声明”
  • @kol:哎呀,thinko!更正了答案。
【解决方案2】:

我可能错了,但我的猜测是:

URI(): Poco::URI::URI();

就像试图将初始化列表传递给没有实现的构造函数。 另一方面

URI(){ Poco::URI::URI(); }

这显然是一个构造函数的定义和实现。第一个给出错误,因为您正在“使用”构造函数进行初始化,而它不正确存在。

【讨论】:

    【解决方案3】:

    执行以下操作的正确方法:

    URI() : Poco::URI(){}
    

    我包含了一个不存在的命名空间URI

    还有:

    Poco::URI::URI(){} // 在使用 gcc 编译器时有效,但在 windows 编译器上无效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 2021-08-30
      • 2016-11-03
      相关资源
      最近更新 更多