0

我有以下代码适用于 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;
};
4

3 回答 3

1

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

于 2011-12-07T14:57:57.030 回答
0

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

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

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

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

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

于 2011-12-07T15:08:06.613 回答
0

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

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

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

还:

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

于 2011-12-07T15:35:53.193 回答