ошибка ctor не определена - PullRequest
       25

ошибка ctor не определена

0 голосов
/ 07 декабря 2011

У меня есть следующий код, который работает в 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?

edit: я использую библиотеку 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;
};

Ответы [ 3 ]

1 голос
/ 07 декабря 2011

Нет, они не имеют в виду одно и то же.Последний создает временный анонимный Poco::URI::URI объект внутри конструктора URI.

0 голосов
/ 07 декабря 2011

Правильный способ сделать следующее:

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

Я включил пространство имен URI, которого не было.

Также:

Poco ::URI :: URI () {} // работает при использовании компилятора gcc, но не в компиляторе Windows

0 голосов
/ 07 декабря 2011

Я могу ошибаться, но я думаю, что это:

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

похоже на попытку передать список инициализации конструктору без реализации. С другой стороны

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

это явно определение и реализация конструктора. Первый выдает ошибку, потому что вы «используете» конструктор для целей инициализации, пока он не существует должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...