By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,846 Members | 1,680 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,846 IT Pros & Developers. It's quick & easy.

Using Vectors in classes - public access

P: n/a
Hello,

I've got a VC++ project containing multiple classes and a main
function. In one of the class functions, it reads from a text file and
places the data into a vector;
//
std::vector<std::vector<std::string applications (50,
std::vector<std::string>(12));
applications[colArr][0] = "Test1";
applications[colArr][1] = "Test2";
//
Which works fine for that classes function, however, I need for other
functions of the class, or potentially other classes to be able to
access the applications vector, most likely done through friend-ing
and inheritance.
I seem to be unable to get the applications vector to be publicly or
even privately declared inside the main class definition. I've tried
placing the vector definition in both sections, it causes
error C2059: syntax error : 'constant'
when I do.
Is there something I'm missing with this?

Thanks,
- Andy
-- Copy of UpdateFileArray.h ---
#ifndef _UPDATEFILEARRAY_H_
#define _UPDATEFILEARRAY_H_

#include <string>
#include <vector>

class UpdateFileArray
{
std::vector<std::vector<std::string applications (50,
std::vector<std::string>(12));
public:
void UpdateArray();
void ArrayLookUp();
friend class SearchVehicle;
};
extern UpdateFileArray UFA;

#endif

May 11 '07 #1
Share this Question
Share on Google+
5 Replies


P: n/a
On May 11, 12:57 pm, andrewmor...@aol.com wrote:
Hello,

I've got a VC++ project containing multiple classes and a main
function. In one of the class functions, it reads from a text file and
places the data into a vector;
//
std::vector<std::vector<std::string applications (50,
std::vector<std::string>(12));
applications[colArr][0] = "Test1";
applications[colArr][1] = "Test2";
//
Which works fine for that classes function, however, I need for other
functions of the class, or potentially other classes to be able to
access the applications vector, most likely done through friend-ing
and inheritance.
I seem to be unable to get the applications vector to be publicly or
even privately declared inside the main class definition. I've tried
placing the vector definition in both sections, it causes
error C2059: syntax error : 'constant'
when I do.
Is there something I'm missing with this?

Thanks,
- Andy

-- Copy of UpdateFileArray.h ---
#ifndef _UPDATEFILEARRAY_H_
#define _UPDATEFILEARRAY_H_

#include <string>
#include <vector>

class UpdateFileArray
{
std::vector<std::vector<std::string applications (50,
std::vector<std::string>(12));
public:
void UpdateArray();
void ArrayLookUp();
friend class SearchVehicle;};

extern UpdateFileArray UFA;

#endif
Have a function in the vectors class to return a reference to the
vector.

One question though, why are you defining a vector of vector of
strings? Surely if you're just reading from a text file, a vector of
std::strings will be more than sufficent.

May 11 '07 #2

P: n/a
On May 11, 1:14 pm, Keith Halligan <keith.halli...@gmail.comwrote:
On May 11, 12:57 pm, andrewmor...@aol.com wrote:


Hello,
I've got a VC++ project containing multiple classes and a main
function. In one of the class functions, it reads from a text file and
places the data into a vector;
//
std::vector<std::vector<std::string applications (50,
std::vector<std::string>(12));
applications[colArr][0] = "Test1";
applications[colArr][1] = "Test2";
//
Which works fine for that classes function, however, I need for other
functions of the class, or potentially other classes to be able to
access the applications vector, most likely done through friend-ing
and inheritance.
I seem to be unable to get the applications vector to be publicly or
even privately declared inside the main class definition. I've tried
placing the vector definition in both sections, it causes
error C2059: syntax error : 'constant'
when I do.
Is there something I'm missing with this?
Thanks,
- Andy
-- Copy of UpdateFileArray.h ---
#ifndef _UPDATEFILEARRAY_H_
#define _UPDATEFILEARRAY_H_
#include <string>
#include <vector>
class UpdateFileArray
{
std::vector<std::vector<std::string applications (50,
std::vector<std::string>(12));
public:
void UpdateArray();
void ArrayLookUp();
friend class SearchVehicle;};
extern UpdateFileArray UFA;
#endif

Have a function in the vectors class to return a reference to the
vector.

One question though, why are you defining a vector of vector of
strings? Surely if you're just reading from a text file, a vector of
std::strings will be more than sufficent.- Hide quoted text -

- Show quoted text -
Hm, I'm a bit puzzled, what do you mean, return a reference to the
vector?

Also, vector of a vector of strings, since it needs to be two
dimentional. A line is read from the text file then split where spaces
occor, then the pieces are placed inside the vector.

May 11 '07 #3

P: n/a
On May 11, 8:45 am, andrewmor...@aol.com wrote:
On May 11, 1:14 pm, Keith Halligan <keith.halli...@gmail.comwrote:
On May 11, 12:57 pm, andrewmor...@aol.com wrote:
Hello,
I've got a VC++ project containing multiple classes and a main
function. In one of the class functions, it reads from a text file and
places the data into a vector;
//
std::vector<std::vector<std::string applications (50,
std::vector<std::string>(12));
applications[colArr][0] = "Test1";
applications[colArr][1] = "Test2";
//
Which works fine for that classes function, however, I need for other
functions of the class, or potentially other classes to be able to
access the applications vector, most likely done through friend-ing
and inheritance.
I seem to be unable to get the applications vector to be publicly or
even privately declared inside the main class definition. I've tried
placing the vector definition in both sections, it causes
error C2059: syntax error : 'constant'
when I do.
Is there something I'm missing with this?
Thanks,
- Andy
-- Copy of UpdateFileArray.h ---
#ifndef _UPDATEFILEARRAY_H_
#define _UPDATEFILEARRAY_H_
#include <string>
#include <vector>
class UpdateFileArray
{
std::vector<std::vector<std::string applications (50,
std::vector<std::string>(12));
public:
void UpdateArray();
void ArrayLookUp();
friend class SearchVehicle;};
extern UpdateFileArray UFA;
#endif
Have a function in the vectors class to return a reference to the
vector.
One question though, why are you defining a vector of vector of
strings? Surely if you're just reading from a text file, a vector of
std::strings will be more than sufficent.- Hide quoted text -
- Show quoted text -

Hm, I'm a bit puzzled, what do you mean, return a reference to the
vector?

Also, vector of a vector of strings, since it needs to be two
dimentional. A line is read from the text file then split where spaces
occor, then the pieces are placed inside the vector.

Look at your class, you are ignoring the constructor(s) altogether.
Declare a ctor and initialize the vector-vector in its initialization
list.

The following is a declaration:
std::vector<std::vector<std::string applications;
.... while this is a definition:
std::vector<std::vector<std::string
applications (50, std::vector<std::string>(12));
.... and definitions are not allowed in a class declaration.

#include <iostream>
#include <string>
#include <vector>

class UpdateFileArray
{
typedef std::vector<std::vector<std::string VecVecStr;
VecVecStr applications;
public:
UpdateFileArray()
: applications(10, std::vector<std::string>(10)) { }
// member functions
VecVecStr& getapp() { return applications; } // get ref to private v-
v
size_t size() const { return applications.size(); }
};

int main()
{
UpdateFileArray ufa;
std::cout << ufa.size() << std::endl;

std::vector<std::stringv(10, "some string");

typedef std::vector<std::vector<std::string VecVecStr;
VecVecStr& r_apps = ufa.getapp(); // seat the reference
r_apps.push_back(v);

std::cout << ufa.size() << std::endl;
}

Although i'm a little puzzled as well as to why you need a vector of
vectors as well.
If each line in the text file represents a Record composed of multiple
strings seperated by spaces, you should be storing std::vector<
Records where a Record class reflects the fields involved.

May 11 '07 #4

P: n/a
On 2007-05-11 14:45, an**********@aol.com wrote:
On May 11, 1:14 pm, Keith Halligan <keith.halli...@gmail.comwrote:
>On May 11, 12:57 pm, andrewmor...@aol.com wrote:


Hello,
I've got a VC++ project containing multiple classes and a main
function. In one of the class functions, it reads from a text file and
places the data into a vector;
//
std::vector<std::vector<std::string applications (50,
std::vector<std::string>(12));
applications[colArr][0] = "Test1";
applications[colArr][1] = "Test2";
//
Which works fine for that classes function, however, I need for other
functions of the class, or potentially other classes to be able to
access the applications vector, most likely done through friend-ing
and inheritance.
I seem to be unable to get the applications vector to be publicly or
even privately declared inside the main class definition. I've tried
placing the vector definition in both sections, it causes
error C2059: syntax error : 'constant'
when I do.
Is there something I'm missing with this?
Thanks,
- Andy
-- Copy of UpdateFileArray.h ---
#ifndef _UPDATEFILEARRAY_H_
#define _UPDATEFILEARRAY_H_
#include <string>
#include <vector>
class UpdateFileArray
{
std::vector<std::vector<std::string applications (50,
std::vector<std::string>(12));
public:
void UpdateArray();
void ArrayLookUp();
friend class SearchVehicle;};
extern UpdateFileArray UFA;
#endif

Have a function in the vectors class to return a reference to the
vector.

One question though, why are you defining a vector of vector of
strings? Surely if you're just reading from a text file, a vector of
std::strings will be more than sufficent.- Hide quoted text -

- Show quoted text -

Hm, I'm a bit puzzled, what do you mean, return a reference to the
vector?
Something like this:

class UpdateFileArray
{
typedef Apps std::vector<std::vector<std::string;
Apps applications (50, std::vector<std::string>(12));
public:
void UpdateArray();
void ArrayLookUp();
Apps& getArray() { return applications; }
const Apps& getArray() { return applications; }
friend class SearchVehicle;
};

--
Erik Wikström
May 11 '07 #5

P: n/a
On May 11, 1:07 pm, Erik Wikström <Erik-wikst...@telia.comwrote:
On 2007-05-11 14:45, andrewmor...@aol.com wrote:
On May 11, 1:14 pm, Keith Halligan <keith.halli...@gmail.comwrote:
On May 11, 12:57 pm, andrewmor...@aol.com wrote:
Hello,
I've got a VC++ project containing multiple classes and a main
function. In one of the class functions, it reads from a text file and
places the data into a vector;
//
std::vector<std::vector<std::string applications (50,
std::vector<std::string>(12));
applications[colArr][0] = "Test1";
applications[colArr][1] = "Test2";
//
Which works fine for that classes function, however, I need for other
functions of the class, or potentially other classes to be able to
access the applications vector, most likely done through friend-ing
and inheritance.
I seem to be unable to get the applications vector to be publicly or
even privately declared inside the main class definition. I've tried
placing the vector definition in both sections, it causes
error C2059: syntax error : 'constant'
when I do.
Is there something I'm missing with this?
Thanks,
- Andy
-- Copy of UpdateFileArray.h ---
#ifndef _UPDATEFILEARRAY_H_
#define _UPDATEFILEARRAY_H_
#include <string>
#include <vector>
class UpdateFileArray
{
std::vector<std::vector<std::string applications (50,
std::vector<std::string>(12));
public:
void UpdateArray();
void ArrayLookUp();
friend class SearchVehicle;};
extern UpdateFileArray UFA;
#endif
Have a function in the vectors class to return a reference to the
vector.
One question though, why are you defining a vector of vector of
strings? Surely if you're just reading from a text file, a vector of
std::strings will be more than sufficent.- Hide quoted text -
- Show quoted text -
Hm, I'm a bit puzzled, what do you mean, return a reference to the
vector?

Something like this:

class UpdateFileArray
{
typedef Apps std::vector<std::vector<std::string;
typedef [source] [target], you got it backwards
Apps applications (50, std::vector<std::string>(12));
This is C++, not Java, definitions go either in a ctor definition's
body, that ctor's init list or in a function definition.
Definitions go with definitions.
You aren't allowed to define members in a class declaration.
A declaration is for declarations.

class N
{
int n; // int n = 0; is illegal
N(); // also a declaration
void foo(); // a declaration
};

// a ctor *definition* with an init list
N::N() : n( 0 ) { }

// this is a definition:
void N::foo() { }
public:
void UpdateArray();
void ArrayLookUp();
Apps& getArray() { return applications; }
const Apps& getArray() { return applications; }
friend class SearchVehicle;

};

--
Erik Wikström

May 11 '07 #6

This discussion thread is closed

Replies have been disabled for this discussion.