我有以下代码适用于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(){}
};
波索/ URI.h
namespace Poco {
class URI
{
public:
URI::URI():
_port(0){}
private:
unsigned short _port;
};
答案 0 :(得分:1)
不,他们的意思并不相同。后者在Poco::URI::URI
构造函数中创建一个临时的匿名URI
对象。
答案 1 :(得分:0)
我可能错了,但我的猜测是:
URI(): Poco::URI::URI();
就像尝试将初始化列表传递给没有实现的构造函数。 另一方面
URI(){ Poco::URI::URI(); }
这显然是构造函数的定义和实现。第一个给出错误,因为你正在“使用”构造函数进行初始化,但它没有正确存在。
答案 2 :(得分:0)
正确的方法:
URI() : Poco::URI(){}
我包含了一个不存在的命名空间URI
。
此外:
Poco :: URI :: URI(){} //在使用gcc编译器时有效但在Windows编译器上没有用