Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Tablica w konstruktorze klasy

Ostatnio zmodyfikowano 2015-08-11 23:23
Autor Wiadomość
Lora
» 2015-08-06 23:01:11
Wygląda na to, że twój kompilator tego nie obsługuje. Mi na Code::Blocksie to działa, ale z tego co wiem VS 2013 nie wspiera w 100% c++11.
P-135835
carlosmay
Temat założony przez niniejszego użytkownika
» 2015-08-08 01:04:34
Na razie zostawiam temat. Z vectorem jest podobnie jak z tradycyjnymi tablicami.
Sprawa dodatkowo się komplikuje, że w deklaracji klasy nie można od razu utworzyć określonej wielkości kontenera vector, bo krzyczy że ty nie jest obsługiwany.
Nawet jak dam w nawiasie gałą 4.
Później muszę push_back()'iem po kolei dodawać kolejne komórki vectora (też w klamrach jak tablice).
Za dużo kombinowania, a efekt mierny. (obecny kod działa)
Poszukam rozwiązania i jak coś wymyślę to wrzucę kod. (może przesiadka na vs15).
Tymczasem dzięki za wskazówki, jest nad czym główkować.
P-135861
carlosmay
Temat założony przez niniejszego użytkownika
» 2015-08-11 23:23:45
Visual 15:
Plik nagłówkowy:
C/C++
#pragma once
namespace SALES
{
    const int Quarters = 4;
   
    class Sales
    {
    private:
        double m_sales[ Quarters ];
        double m_averages;
        double m_max;
        double m_min;
        double Max( const double ar[] ) const;
        double Min( const double ar[] ) const;
        double Aver( const double ar[] ) const;
    public:
        Sales();
        Sales( double ar[] );
        ~Sales();
        Sales * SetSales(); // zwraca juz wypelniony this do obiektu w main()
        void Show();
    };
}

Plik z metodami: (wklejam tylko te, w których była kosmetyka)
C/C++
using namespace SALES;

Sales::Sales()
    : m_averages( 0 )
     , m_max( 0 )
     , m_min( 0 )
     , m_sales
{ 0, 0, 0, 0 } { }

Sales::Sales( double ar[] )
    : m_averages( Aver( m_sales ) )
     , m_max( Max( m_sales ) )
     , m_min( Min( m_sales ) )
     , m_sales
{ ar[ 0 ], ar[ 1 ], ar[ 2 ], ar[ 3 ] } { }

// reszta kodu bez zmian (jest we wcześniejszym poście)

Plik użycia klasy Sales:
C/C++
#include <iostream>
#include "Sales.h"

int main()
{
    using namespace SALES;
    double temp[] = { 11897.15, 22658.24, 78533.39, 44784.41 };
    Sales y2014( temp );
   
    Sales y2015;
    Sales * p_y2015 = & y2015;
    p_y2015->SetSales(); // pobiera zwrocony this
   
    std::cout << "ROK ROZLICZENIOWY 2014" << std::endl;
    y2014.Show();
    std::cout << "ROK ROZLICZENIOWY 2015" << std::endl;
    y2015.Show();
    std::cout << std::endl;
   
    system( "pause" );
}

Jednak to kompilator utrudniał życie. Jeszcze raz dzięki za wskazówki.

P-136082
1 « 2 »
Poprzednia strona Strona 2 z 2