Открытый исходный код [закрытый].Net Reporting Tool

Когда вы возвращаете реальный объект (а не ссылку или указатель), он вызывает его копию ctor. В этом случае вы возвращаете базовый класс, поэтому он вызывает его конструктор копирования и создает новый объект базового класса.

#include <iostream>
using namespace std;

class Base
{
public:
    Base() = default;
    Base(const Base & base) { std::cout << "COPY BASE" << std::endl; }
    virtual void print() { cout << "Base" << endl; }
};

class Derived : public Base
{
public:
    Derived() = default;
    Derived(const Derived & derived) { std::cout << "COPY DERIVED" << std::endl; }
    void print() { cout << "Derived" << endl; }
};

Base go()
{
Derived *derived = new Derived();

Base *base = derived;
base->print();

// (*base).print(); // prints "Derived" !
// Base base2 = (*base);
// base2.print(); // prints "Base" !

return *base;
}

int main()
{
    Base base = go();
    base.print();
    return 0;
}

В этом случае выходные данные будут: Derived, COPY BASE, Base

31
задан Gulzar Nazim 14 October 2008 в 21:11
поделиться

3 ответа

fyireporting (выпущенный в соответствии с лицензией Apache) стоит попытки.

Проект fyiReporting RDL является мощным отчетом и построением диаграммы системы на основе Языка определения отчета (RDL). Табличная, свободная форма, матрица, диаграммы полностью поддерживаются. Вывод отчета может быть отображен как HTML, PDF, XML.Net Control, веб-Архив, и к принтеру. Библиотеки существуют для использования в Вашем ASP.NET, Windows .NET и приложения командной строки.

21
ответ дан 27 November 2019 в 22:46
поделиться

Попробуйте Microsoft система ReportViewer . Это к использованию Язык Определения Отчета, но это готово выйти из поля. Это не Открытый исходный код, но это - распространяемый файл.

5
ответ дан 27 November 2019 в 22:46
поделиться

Как предложил Ant, существует также ReportingCloud, который является ответвлением fyiReporting

.
3
ответ дан 27 November 2019 в 22:46
поделиться