[C++][MFC]Problem z funkcją wirtualną w klasie.

0

Witam !

Mam klase macierzy dziedzicząca po wektorze :

#pragma once
#include "wektor.h"

class macierz :
    public wektor
{
private:
    int K, W;
    double *A;
    string Naz;

public:
    virtual macierz operator+(const macierz m2);
    virtual macierz operator-(const macierz m2);
    virtual macierz operator*(const macierz m2);
    virtual macierz operator*(const double l);
    virtual double operator()(int a, int b);

    friend ostream &operator<<(ostream &wy, const macierz &w);

    //opcjonalna funkcja wirtualna

    macierz(void);
    macierz(CString MACIERZ,CString NAZWA);
    ~macierz(void);
};

Wszystko działa i pasuje jednak gdy chcę w miejsce
//opcjonalna funkcja wirtualna

wpisać :

virtual void max()
    {
    ...
    }

to kod nie bangla, ponadto wyrzuca mi niezadeklarowanie WSZYSTKICH zmiennych ,obiektów i wskaźników w programie. Wyrzuca błędy w konstruktorach, destruktorach, przeciążeniach operatorów, nawet w deklaracji zmiennych klasy ;-(

Proszę o pomoc, nie wiem gdzie popełniam błąd.

Jest to projekt MFC w visual studio c++ 2008 pro.

--PANI--EDYTA--

Słuchajcie, rozwiązałem problem i zarazem nie. Gdy zmieniam nazwe funkcji na inną to jest ok, jednak zarówno "min", jak "max" powodują ten problem, a chciał bym tak nazwać funkcje. O co biega ?

0

A to nie problem z makrodefinicjami min i max w windows.h? Przed włączeniem windows.h/nagłówków MFC dodaj #define NOMINMAX.

0

Dzięki bardzo mistrzu ! Już płakałem, że nie potrafie funkcji wirtualnej zrobić ;p A powiedz co właściwie robią te makra (min, max) jeśli można jeszcze prosić ?

0

O ile mnie pamięć nie myli to robią to co zwykłe makra/funkcje min i max. Makra, jak to makra, są rozwijane w miejscu wstawienia, zamiast nazwy funkcji min/max miałeś rozwinięte makro do formy kodu zwracającego większą/mniejszą liczbę... czyli istny burdel.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0