0

私はこのようにクラスConを持っています:-

class Con
{
 public:
  struct MachineList
  {
    BSTR AccountId;
    BSTR MachineId;
    BSTR Make;
    char* Make1;
    BSTR Model;
    char* Model1;
    BSTR SerialNumber;
    BSTR IpAddress;
    char* IpAddress1;
    BSTR Port;
    int Port1;
    BSTR LocationCode;
    } machinelist[100] ;
   int w;
 } ;

Conクラスのオブジェクトを次のように作成しましたCon m_con;

別のクラスがありますTest

class Test
{
 public:
  void fun();//i want to pass the object of the structure that i created in Con
  //what arguments should i pass in fun function?
};
4

3 に答える 3

4

machinelist配列全体を渡しますか?

void fun(const Con::MachineList (&argument)[100] );

しかし、typedefを使用する方が簡単です。

class Con { 
 public:
    struct MachineList{ ... };
    typedef MachineList (Machines)[100];

    Machines machines;
};

と使用

void fun(const Con::Machines& m);

次のように呼ばれる:

Con c;
fun( c.machines );
于 2012-10-26T18:58:38.260 に答える
2
class Con {
public:
   struct Machine {
      BSTR  AccountId;
      BSTR  MachineId;
      BSTR  Make;
      char* Make1;
      BSTR  Model;
      char* Model1;
      BSTR  SerialNumber;
      BSTR  IpAddress;
      char* IpAddress1;
      BSTR  Port;
      int   Port1;
      BSTR  LocationCode;
   };
   typedef Machine Machines[100];

   Machines machines;
   int      w;
};

/**
 * passing a reference to a single machine, which fun might change
 */
void fun0( Con::Machine & machine );

/**
 * passing a reference to a single machine, which fun cannot change
 */
void fun1( const Con::Machine & machine );

/**
 * passing a reference to the entire array of machines, which fun may change
 */
void fun2( Con::Machines & machines );

/**
 * passing a reference to the entire array of machines, which fun cannot change
 */
void fun3( const Con::Machines & machines );

どのバージョンの楽しみが欲しいのかわからないので、4つ作りました...

于 2012-10-26T19:02:53.697 に答える
0
class Test
{
public:
void fun(Con::MachineList);
};

Test t;
Con c;
t.fun(c.machinelist[0]);

現在、Con :: MachinListタイプはコピーに適していないように見えるため、適切なコンストラクターと割り当て演算子を定義するか、上記のように宣言することによって参照を渡す必要がありfunますvoid fun(Con::MachineList const &);

また、MachinListにはおそらく適切なデストラクタが必要です...

于 2012-10-26T18:55:57.607 に答える