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(); }

2行のコードは同じ意味ですか?また、コードの最初の1行が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 に答える