Hi all:
I am using a code from third party. I write my own part and add it to
that code and compile together.
I try to use "vector" in my program. So I add "#include <vector>" to
my program.
But when I compile my program together with the code from the third
party,
the compiler reports error: redefinition of `class vector'.
I look at the code from the third party and find that in one file of
that code,
"class vector" is defined for other purpose.
I can not modify the code from the third party, because it may make
the situation worse.
What should I do to my own program to solve the name confliction
problem?
Thanks a lot.
John 10 2422
"John" <jo*********@yahoo.com> wrote in message
news:c3*************************@posting.google.co m... Hi all:
I am using a code from third party. I write my own part and add it to that code and compile together. I try to use "vector" in my program. So I add "#include <vector>" to my program. But when I compile my program together with the code from the third party, the compiler reports error: redefinition of `class vector'.
I look at the code from the third party and find that in one file of that code, "class vector" is defined for other purpose. I can not modify the code from the third party, because it may make the situation worse. What should I do to my own program to solve the name confliction problem?
Don't write using namesapce std; in your code. You will need to refer to the
standard vector class as std::vector then.
John wrote: Hi all:
I am using a code from third party. I write my own part and add it to that code and compile together. I try to use "vector" in my program. So I add "#include <vector>" to my program. But when I compile my program together with the code from the third party, the compiler reports error: redefinition of `class vector'.
I look at the code from the third party and find that in one file of that code, "class vector" is defined for other purpose. I can not modify the code from the third party, because it may make the situation worse. What should I do to my own program to solve the name confliction problem?
The C++ standard class vector is in namespace std, so unless your 3rd
party library puts it there, too, there shouldn't be a name conflict.
After all, that's why namespaces exist.
If your compiler doesn't put vector into namespace std, then it is
probably quite outdated and you should consider using a more recent
one.
John posted: Hi all:
I am using a code from third party. I write my own part and add it to that code and compile together. I try to use "vector" in my program. So I add "#include <vector>" to my program. But when I compile my program together with the code from the third party, the compiler reports error: redefinition of `class vector'.
I look at the code from the third party and find that in one file of that code, "class vector" is defined for other purpose. I can not modify the code from the third party, because it may make the situation worse. What should I do to my own program to solve the name confliction problem?
Thanks a lot.
John
namespace ThirdParty
{
#include <thirdpary>
}
std::vector
ThirdParty::vector
using namespace std
vector //refers to std::vector
-JKop jo*********@yahoo.com (John) wrote in message news:<c3*************************@posting.google.c om>... Hi all:
I am using a code from third party. I write my own part and add it to that code and compile together. I try to use "vector" in my program. So I add "#include <vector>" to my program. But when I compile my program together with the code from the third party, the compiler reports error: redefinition of `class vector'.
I look at the code from the third party and find that in one file of that code, "class vector" is defined for other purpose. I can not modify the code from the third party, because it may make the situation worse. What should I do to my own program to solve the name confliction problem?
Well, the vector template that is defined in <vector> resides in
namespace std, so you should still be able to use it even in the
presence of the other vector class by specifying std::vector instead
of just vector. Note also that getting rid of using directives (e.g.
using namespace std) is generally a good idea, and will help identify
more name collisions between std::vector and your vendors' vector as
well.
HTH, Dave Moore
Thanks a lot.
John
On Wed, 02 Jun 2004 12:32:50 GMT in comp.lang.c++, JKop <NU**@NULL.NULL>
wrote, namespace ThirdParty {
#include <thirdpary> }
You think so, huh? Where is the linker going to find the definition of
ThirdParty::vector or anything else?
Hi all:
Thanks for reply.
In my program, I already use std::vector except the line: #include
<vector>.
Below is part of the error message:
In file included from
/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/vector.h:32,
from mycode.cc:35:
/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_vector.h:153:
`vector' is not a template type
/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_vector.h:154:
redefinition of `class vector'
mobile/god.h:117: previous definition here
/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_vector.h:156:
invalid member template declaration `vector::_Base'
/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_vector.h:158:
invalid member template declaration `vector::value_type'
mycode.cc is my own code. Line 35 is #include <vector>. mobile/god.h
is the code
from third party.
I also use list in my code, the compiler does not complain it.
Thanks a lot.
John
Rolf Magnus <ra******@t-online.de> wrote in message news:<c9*************@news.t-online.com>... John wrote:
Hi all:
I am using a code from third party. I write my own part and add it to that code and compile together. I try to use "vector" in my program. So I add "#include <vector>" to my program. But when I compile my program together with the code from the third party, the compiler reports error: redefinition of `class vector'.
I look at the code from the third party and find that in one file of that code, "class vector" is defined for other purpose. I can not modify the code from the third party, because it may make the situation worse. What should I do to my own program to solve the name confliction problem?
The C++ standard class vector is in namespace std, so unless your 3rd party library puts it there, too, there shouldn't be a name conflict. After all, that's why namespaces exist. If your compiler doesn't put vector into namespace std, then it is probably quite outdated and you should consider using a more recent one.
John wrote: Hi all:
Thanks for reply. In my program, I already use std::vector except the line: #include <vector>. Below is part of the error message: In file included from /usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/vector.h:32,
^^^^^^
This is your problem. The compiler is too old. g++ versions before 3.x
are not compliant wrt namespace std. They make std a synonym for the
global namespace. If possible, you should upgrade to gcc 3.x.
David Harmon posted: On Wed, 02 Jun 2004 12:32:50 GMT in comp.lang.c++, JKop <NU**@NULL.NULL> wrote,namespace ThirdParty {
#include <thirdpary> }
You think so, huh? Where is the linker going to find the definition of ThirdParty::vector or anything else?
Let's assume that there's:
ThirdParty.hpp
ThirdParty.cpp
In the Source Code file in which you wish to use this library, put:
namespace ThirdParty
{
#include <thirdparty.hpp>
}
And now, for the Source code file... Don't actually add it to your project
to be compiled; instead, do this: Make another file
"ThirdPartySourceCode.cpp", and put the following into it:
namespeace ThirdParty
{
using namespace ThirdParty;
#include <thirdparty.cpp>
}
-JKop
On Wed, 02 Jun 2004 18:16:05 GMT in comp.lang.c++, JKop <NU**@NULL.NULL>
wrote, Let's assume that there's:
ThirdParty.hpp ThirdParty.cpp
No, that's too easy. Instead there is
ThirdParty.hpp
ThirdParty.lib
David Harmon posted: On Wed, 02 Jun 2004 18:16:05 GMT in comp.lang.c++, JKop <NU**@NULL.NULL> wrote,Let's assume that there's:
ThirdParty.hpp ThirdParty.cpp
No, that's too easy. Instead there is
ThirdParty.hpp ThirdParty.lib
Library files are the devil!
-JKop This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: John L. Clark |
last post by:
I am curious as to the rationale, and effect, of having default
namespaces not applying (directly) to attributes (see
http://www.w3.org/TR/REC-xml-names/#defaulting). Given an attribute
without a...
|
by: kj |
last post by:
Consider the following XML document:
<?xml version='1.0' encoding='UTF-8'?>
<bar:foo xmlns:bar='someuri'>
<baz/>
</bar:foo>
What namespace does baz belong to? What is this namespace bound...
|
by: Mike Dickens |
last post by:
hi,
i'm sure this has come up before but havn't managed to find an answer.
if i have the following xslt
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet method="xml" version="1.0"...
|
by: clinton__bill |
last post by:
Hi,
I usually use "using namespace <namespace_name>" to reference a
namespace. Today I run across a code, in its header file it has this,
namespace SP1{
class C1;
}
While SP1::C1 is a...
|
by: Tony Johansson |
last post by:
Hello!
I'm reading a book about C++ and there is something that I don't understand
so I ask you.
Below I have the text from the book and the code from the file where main is
located and some...
|
by: Patrick Guio |
last post by:
Dear all,
I have some problem with insertion operator together with namespace.
I have a header file foo.h containing declaration of classes, typedefs and
insertion operators for the typedefs in...
|
by: Programatix |
last post by:
Hi,
Normally, I would use Namespace for all the window forms I created. With VS
2005, the code generated by the designer is hidden using partial keyword.
The question is, is there an efficient...
|
by: toolmaster |
last post by:
Since many of the modern computer languages have built-in namespace
features, I can't understand why not add this feature into standard C.
I've heard many people complain of the lacking of...
|
by: CrazyJohn |
last post by:
Hi guys,
This is my first time posting question here, if I break any rules,
please kindly point out. And I'm really glad to be a part of this
community.
Here is my question,
Our lecturer...
|
by: Peng Yu |
last post by:
Hi,
I'm wondering if there is something in namespace like the 'private'
keyword in class?
I want to define some class or function that can only be used within
that namespace.
Thanks,
Peng
|
by: DolphinDB |
last post by:
Tired of spending countless mintues downsampling your data? Look no further!
In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
|
by: isladogs |
last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM).
In this month's session, we are pleased to welcome back...
|
by: isladogs |
last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM).
In this month's session, we are pleased to welcome back...
|
by: jfyes |
last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
|
by: ArrayDB |
last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
|
by: CloudSolutions |
last post by:
Introduction:
For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
|
by: Defcon1945 |
last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
|
by: af34tf |
last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
|
by: Faith0G |
last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
| |