Как уже было написано, классу Client, похоже, нужны параметры при его создании.Итак, я вижу 2 возможности сохранить экземпляр Client в вашей структуре.
На самом деле в моей настройке Arduino (1.0) кажется, что я не могу напрямую использовать Client, Client - это чисто виртуальный класс, его заменил EthernetClient.
1.Использование EthernetClient (лучший, на мой взгляд, но с Arduino 1.0)
В зависимости от ваших потребностей, возможно, EthernetClient лучше.У него есть конструктор по умолчанию.http://arduino.cc/en/Reference/EthernetClient
2.Используя конструктор в вашей структуре:
struct IRCClient {
char *nick;
char *user;
char *host;
char *name;
int lastping;
Client client;
IRCClient(byte * server, int port) : client(server,port) { }
};
byte server[] = { /* ip address */ };
IRCClient ircClient(server, 80);
(я не мог протестировать это решение, как я говорил ранее, Client - это чисто виртуальный класс в Arduino 1.0).
3.Использование указателей
У вас может быть структура с указателем на вашего клиента:
struct IRCClient {
char *nick;
char *user;
char *host;
char *name;
int lastping;
Client *client;
};
А затем, когда вы создаете свой клиент, вы сохраняете его, получая его адрес:
byte server[] = { /* ip address */ };
Client client(server, 80);
IRCClient ircClient;
ircClient.client = &client;
Однако при этом соблюдайте осторожность: если ваш клиент будет уничтожен (конец области действия функции ...), ircClient.client будет указывать на ... ничего.
ИВы должны быть знакомы с указателями, чтобы правильно манипулировать хранимым объектом.