Przekazanie argumentów obiektu przez referencję do funkcji

0

Witam
Chcę przekazać do funkcji w zewnętrznym pliku wskaźnik do TForm i TComponent (utworzonych wcześniej) aby porównać parę argumentów z nich, jednak przy próbie kompilacji dostaję
[C++ Warning] wallCheck.cpp(12): W8054 Style of function definition is now obsolete
[C++ Error] wallCheck.cpp(14): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] wallCheck.cpp(14): E2288 Pointer to structure required on left side of -> or ->*

Nie rozumiem dlaczego, do funkcji przekazałem Form1, który jest wskaźnikiem na formę pierwszą oraz ball, który wskazuje na obiekt klasy TImage dziedziczącej od TComponent, więc chyba można na tym użyć "->"?
Zapewne gdzieś coś pomyliłem, tylko nie mogę znaleźć gdzie.

(fragmenty z plików:)

//main.h
#include "wallCheck.h";
[...]
class TForm1 : public TForm
{
__published:	
        TImage *ball;
[...]
}
//main.cpp

wallCheck(Form1,ball,TOLERANCJA);
//wallCheck.h
#ifndef wallCheckH
#define wallCheckH

#include <Classes.hpp>                           //załączyłem je wszystkie dla pewności
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Graphics.hpp>

const int WALL_NONE=0;
const int WALL_TOP=1;
const int WALL_BOT=2;
const int WALL_LEFT=3;
const int WALL_RIGHT=4;


const int wallCheck(TForm*,TComponent*,int);  


#endif
//wallCheck.cpp

#pragma hdrstop
#include "wallCheck.h"

 wallCheck(form,comp,tol)                           //warning z kompilatora
{
  if(form->Left+tol>=comp->Left)                  // 2 errory
        return WALL_LEFT;
  else
        return WALL_NONE;
}
#pragma package(smart_init)

Używam buildera 6

5

Coś złego w używaniu współczesnej składni c++, zamiast tej z lat 80/90 ubiegłego wieku? Nawet kompilator Cię ostrzega. Najprawdopodobniej kompilator potraktował argumenty funkcji jako inty.

Popraw i sprawdź.

int wallCheck(TForm *form, TComponent *comp, int tol) 
{
  if (form->Left+tol>=comp->Left)
        return WALL_LEFT;
  else
        return WALL_NONE;
}

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