#c #variables #accessibility
#c #переменные #Специальные возможности
Вопрос:
Я использую библиотеку xerces для анализа xml на C
сохраняя xml-элементы в массиве строк, я хочу получить доступ к этому массиву строк из моего класса
код класса обработчика —
#include "MySAX2Handler.hpp"
#include <xercesc/sax2/Attributes.hpp>
#include <iostream>
#include <string>
using namespace std;
const int MAXITEMS = 100;
string resultArray[MAXITEMS];
int cnt = 0;
void MySAX2Handler::startElement(const XMLCh* const uri, const XMLCh* const localname,
const XMLCh* const qname, const Attributesamp; attrs)
{
char* message = XMLString::transcode(localname);
resultArray[cnt] = message;
cnt ;
for (int idx = 0; idx < attrs.getLength(); idx )
{
char* attrName = XMLString::transcode(attrs.getLocalName(idx));
char* attrValue = XMLString::transcode(attrs.getValue(idx));
resultArray[cnt] = attrName;
cnt ;
resultArray[cnt] = attrValue;
cnt ;
}
XMLString::release(amp;message);
}
Я хочу получить доступ к resultArray из другого класса
Пожалуйста, помогите мне, я новичок в C
Комментарии:
1. У меня сложилось впечатление, что вы немного смущены, когда говорите «из другого класса». C — это не Java, он гораздо более свободен. Вероятно, лучше всего взять хорошую книгу — в FAQ перечислены несколько хороших.
2. На самом деле это не вопрос.
3. я думаю, вам следует (по крайней мере) добавить проверку в свой цикл, если (cnt < MAXITEMS) прерывается;
Ответ №1:
resultArray
это глобальная переменная с внешней связью, поэтому вы уже можете получить к ней доступ из любого места вашей программы. Вам просто нужно объявить ее:
// someotherfile.cpp
extern std::string resultArray[100];
void foo()
{
std::cout << resultArray[12] << std::endl;
}