Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Игнорирование пространств имён. Мешанина из системных и кастомных классов и методов. Кривые руки или кривая реализация?

9.7K
17 августа 2012 года
Vitamant
228 / / 07.02.2011
Доброго времени суток!

Я пишу на C#, поэтому некоторые вещи очевидные опытным разработчикам, пишущим на С++ мне неизвестны. Потому обращаюсь со следующим вопросом и сопутствующим куском кода:

Код:
//MObject.h

#pragma once

#include "Stdafx.h"

namespace MyNamespace{
namespace System
{
    public ref class MObject
    {
        public:
           virtual void ToString() = 0;
    };
}}
Имею вот такое вот пространство имён с вот таким вот базовым классом MObject. Попытка скомпилировать подобное безобразие приводит к следующему результату:
Error 1 error C4485: 'MyNamespace::System::MObject::ToString' : matches base ref class method 'System::Object::ToString', but is not marked 'new' or 'override'; 'new' (and 'virtual').

Подскажите - каким местом этот ту... кхм... великолепный язык умудряется сопоставить мой MyNamespace::System::MObject::ToString с нетовским System.Object.ToString(), невзирая на разницу в пространствах имён, имени класса и (!!!) сигнатуре метода (функции).

WTH?!

Это сухая выжимка из данной проблемы на простейшем примере. К примеру, мой статичный метод MyNamespace::System::Environment::GetCurrentDirectory() пересекается с глобальным GetCurrentDirectory() (эту проблему уже подпёр костылями и решил, но всё равно неприятно).

Заранее спасибо за любые комментарии.
9.7K
19 августа 2012 года
Vitamant
228 / / 07.02.2011
В С++ нет базового класса с функцией ToString().

Проблема была в "ref". До кучи сама либа компилировалась с поддержкой CLR. Отключил, убрал. Проблема разрешилась.
40K
19 августа 2012 года
D129
228 / / 18.04.2012
Компилятор - не ошибается.

все обьекты неявно отнаследованы от object.

вы не можете без последствий использовать имена функций базового класса.
40K
19 августа 2012 года
D129
228 / / 18.04.2012
Кроме того, в шарпе подобная ошибка - только warning. Ну, наверное в сях это построже сделали.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог