如何将结构传递给另一类定义的C 功能

How to pass the structure to a function in C++ defined in another class?

本文关键字:一类 定义 功能 结构      更新时间:2023-10-16

我有一个类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?
};

您是否要通过整个machinelist数组?

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

,但是更容易的是打字:

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

并使用

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

被称为:

Con c;
fun( c.machines );
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 );

我不明白您想要哪种版本的乐趣,所以我制作了四个...

class Test
{
public:
void fun(Con::MachineList);
};
Test t;
Con c;
t.fun(c.machinelist[0]);

当前的con :: Machinlist类型看起来不适合复制,因此您应该定义适当的构造函数和评估操作员,或者应通过将fun称为void fun(Con::MachineList const &);而不是如上我所显示的。

也可能需要适当的破坏者...