473,795 Members | 3,323 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

can a container contain references?

Hello,

Is it possible to put object references into a container, such as a
vector? I tried the following, but the compiler gave me lots of error
messages.

struct A{
int x;
};

int main(){
vector<A&X;
A a;
X.push_back(a);
}

Thanks.
Jess

May 9 '07 #1
6 2028
It's impossible as STL's implementation doesn't support it. If you
like this feature, you have to define your own container.

Cheers

On May 9, 10:23 am, Jess <w...@hotmail.c omwrote:
Hello,

Is it possible to put object references into a container, such as a
vector? I tried the following, but the compiler gave me lots of error
messages.

struct A{
int x;

};

int main(){
vector<A&X;
A a;
X.push_back(a);

}

Thanks.
Jess

May 9 '07 #2
Jess wrote:
Hello,

Is it possible to put object references into a container, such as a
vector? I tried the following, but the compiler gave me lots of error
messages.

struct A{
int x;
};

int main(){
vector<A&X;
A a;
X.push_back(a);
}

You can make a vector of pointers:

struct A{
int x;
};

int main(){
vector<A*X;
A a;
X.push_back(&a) ;
}
May 9 '07 #3
Jess wrote:
Hello,

Is it possible to put object references into a container, such as a
vector? I tried the following, but the compiler gave me lots of error
messages.

struct A{
int x;
};

int main(){
vector<A&X;
A a;
X.push_back(a);
}

Thanks.
Jess
Container element must be copyable and assignable...If you check
push_back's prototype, then it's clear why you are getting all the error
messages.

void push_back(const T& x);

Fei
May 9 '07 #4
Jess wrote:
Hello,

Is it possible to put object references into a container, such as a
vector? I tried the following, but the compiler gave me lots of error
messages.
No. Container elements must be assignable (and/or copyable?).
May 9 '07 #5
Jess wrote:
>
Is it possible to put object references into a container, such as a
vector?
Not directly. But if you've got an implementation of TR1 (or Boost) you
can use a container of std::tr1::refer ence_wrapper<To bjects. A
reference_wrapp er<Tacts pretty much like a T&, except that it can be
copied and assigned.

--

-- Pete
Roundhouse Consulting, Ltd. (www.versatilecoding.com)
Author of "The Standard C++ Library Extensions: a Tutorial and
Reference." (www.petebecker.com/tr1book)
May 9 '07 #6
On May 9, 8:11 am, red floyd <no.s...@here.d udewrote:
Jess wrote:
Hello,
Is it possible to put object references into a container, such as a
vector? I tried the following, but the compiler gave me lots of error
messages.

No. Container elements must be assignable (and/or copyable?).
Once a reference has been initialized, it cannot be made to reference
any other object (unlike some other programming languages). In other
words, in the lifetime of a reference, it can reference one and only
one object.

Since the element of a container is normally constructed before an
object "is put in the container element", it is no longer possible to
store the object in the reference since the reference has already been
created and initialized. If it were possible to change the object
that a reference references, we would not have this problem. Since
pointers are allowed to point to different objects in their lifetime,
we must use pointers instead.

Are my statements above basically correct (sorry for the English
syntax, I did not start leaning English until I was 4 years old :) )?

Bob

May 9 '07 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
1597
by: Jason Heyes | last post by:
I wrote a previous post that asked whether there was a reference-counted implementation of std::vector. Apparantly there wasn't. So my next question is, is it possible to write your own shared container that behaves like std::vector? Here is me trying to answer that question: class FooReference;
32
1793
by: Severin Ecker | last post by:
hi! normally i would simply do the following: std::vector<Element> vec; void somefunc() { Element e; vec.push_back(e); }
5
1178
by: Tony Johansson | last post by:
Hello Experts! I just wonder about this question. A polymorf container-object must always store references to those object that exist in the contain object. This statement must be false. //Tony
5
724
by: bg | last post by:
Hi! How do I check if "date" exists before using that code? I've built a RSSreader and sometimes there's a date in it and sometimes not. How can I check if it exists to avoid crash (DataBinder.Eval: 'System.Data.DataRowView' does not contain a property with the name date) <asp:DataGrid id="RssNewsGrid"
14
2043
by: PengYu.UT | last post by:
In the following program, I want an iterator contain pointer pointing to constant object not const pointer. If it is possible would you please let me know how to do it? #include <boost/shared_ptr.hpp> #include <vector> #include <iterator> #include <iostream> class trial {
2
2008
by: Daniel Lipovetsky | last post by:
I would like for an object to "report" to a container object when a new instance is created or deleted. I could have a container object that is called when a new instance is created, as below. class AnyObject: pass class Container: links = def add(self,other):
5
4129
by: gerry | last post by:
I am trying to create a custom container control that will only ever contain a specific type of control. At design time, when a control of a different type is added to the container I would like to wrap the control in the proper control type - which is also a container. At design time I want to be able to turn this : <my:container> <asp:textbox />
8
1263
by: puzzlecracker | last post by:
Guys, what is more preferable, given that I don't have access to boost or shared pointers: std::map<T*, std::set<T2** *_myMap; vs. std::map<T*, std::set<T2* *myMap; Notice that in the latter, containing set is not a pointer. Could
5
2617
by: Olumide | last post by:
Hello - To begin with, I'm not the most experienced STL use out there but I'm slowly getting there. One bug(?) that's plagued me of recent is the way the OS (or is it STL?) appears to relocate a container in memory if for example the container needs to grow, with the result that any references (iterators included) to items in such a container cease to be valid and may return the address 0xCDCDCD or 0xDDDDDD in the windows environment (I...
0
9672
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9519
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10213
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
10163
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
1
7538
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5436
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
5563
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
4113
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
3721
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.