E
ethan.liuyi
Hi,
I am trying to wrap c functions with some exception handling, for
example, wrap the socket bind in A::Bind
a.h
namespace A {
int Bind(int fd, struct sockaddr *addr, socklen_t addrlen) throw
(inet_error);
}
a.cc
namespace A {
int Bind(int fd, struct sockaddr *addr, socklen_t addrlen) throw
(inet_error) {
/* if error, throw; otherwise return; */
}
}
The problem is this generates link error,
error: reference to ‘sockaddr’ is ambiguous....
it seems the compiler think I define a new struct, with the same name
"sockaddr" in name space A, I tr
ied to remove the struct keyword, and it wouldn't compile.
in A, I have to reference to the global C struct, sockaddr etc.
in main(), I have to use those global C structs together with
functions I defined in A.
I am a bit confused here, I didn't define any new struct in A.
so I guess my question is, is there a simple and clean way to use a C
struct within a user defined namespace in C++?
I am trying to wrap c functions with some exception handling, for
example, wrap the socket bind in A::Bind
a.h
namespace A {
int Bind(int fd, struct sockaddr *addr, socklen_t addrlen) throw
(inet_error);
}
a.cc
namespace A {
int Bind(int fd, struct sockaddr *addr, socklen_t addrlen) throw
(inet_error) {
/* if error, throw; otherwise return; */
}
}
The problem is this generates link error,
error: reference to ‘sockaddr’ is ambiguous....
it seems the compiler think I define a new struct, with the same name
"sockaddr" in name space A, I tr
ied to remove the struct keyword, and it wouldn't compile.
in A, I have to reference to the global C struct, sockaddr etc.
in main(), I have to use those global C structs together with
functions I defined in A.
I am a bit confused here, I didn't define any new struct in A.
so I guess my question is, is there a simple and clean way to use a C
struct within a user defined namespace in C++?