Trouble with namespaces and unresolved externals

  • Thread starter =?ISO-8859-1?Q?Ney_Andr=E9_de_Mello_Zunino?=
  • Start date
?

=?ISO-8859-1?Q?Ney_Andr=E9_de_Mello_Zunino?=

Hello.

I am having trouble with namespaces and unresolved externals. The
following three files (memoria.h, memoria.cpp and teste.cpp) illustrate
the problem:

// *************** memoria.h ***************

#include <vector>

namespace mips
{
using std::vector;
using std::size_t;
const unsigned int c_tam_memoria = 65536;

class memoria
{
public:
memoria(const size_t tamanho = c_tam_memoria);
ubyte& operator[](const size_t posicao);
private:
vector<ubyte> m_memoria;
};
}

// ***************end of memoria.h ***************


// *************** memoria.cpp ***************

#include "memoria.h"

namespace mips
{

memoria::memoria(const size_t tamanho)
: m_memoria(tamanho)
{
}

ubyte& memoria::eek:perator[](const size_t posicao)
{
return m_memoria.at(posicao);
}

}

// *************** end of memoria.cpp ***************


// *************** teste.cpp ***************

#include "memoria.h"

int main()
{
using namespace mips;
memoria mem;
mem[100] = 33;
}

// *************** end of teste.cpp ***************

Could anybody tell me what I am missing? I thought I had grasped the
concept of namespaces, but it seems I have not. I would appreciate if
someone could show me where I am wrong.

Thank you very much,
 
V

Victor Bazarov

Ney André de Mello Zunino said:
I am having trouble with namespaces and unresolved externals. The
following three files (memoria.h, memoria.cpp and teste.cpp) illustrate
the problem:

// *************** memoria.h ***************

#include <vector>

namespace mips
{
using std::vector;
using std::size_t;
const unsigned int c_tam_memoria = 65536;

class memoria
{
public:
memoria(const size_t tamanho = c_tam_memoria);
ubyte& operator[](const size_t posicao);
private:
vector<ubyte> m_memoria;
};
}

// ***************end of memoria.h ***************


// *************** memoria.cpp ***************

#include "memoria.h"

namespace mips
{

memoria::memoria(const size_t tamanho)
: m_memoria(tamanho)
{
}

ubyte& memoria::eek:perator[](const size_t posicao)
{
return m_memoria.at(posicao);
}

}

// *************** end of memoria.cpp ***************


// *************** teste.cpp ***************

#include "memoria.h"

int main()
{
using namespace mips;
memoria mem;
mem[100] = 33;
}

// *************** end of teste.cpp ***************

Could anybody tell me what I am missing? I thought I had grasped the
concept of namespaces, but it seems I have not. I would appreciate if
someone could show me where I am wrong.

If the code doesn't compile, you have to post the compiler diagnostics.
I tried compiling it, and it passed with flying colours. If the program
doesn't link, did you remember to add both files to the link command line?

Anyway, post the error messages you get. The code seems fine, but there
is always a possibility of a compiler malfunction...

Victor
 
?

=?ISO-8859-1?Q?Ney_Andr=E9_de_Mello_Zunino?=

Victor said:
If the code doesn't compile, you have to post the compiler diagnostics.
I tried compiling it, and it passed with flying colours. If the program
doesn't link, did you remember to add both files to the link command line?

Victor, I thank you for asking that question about adding the object
files to the link command line because, believe it, that was precisely
what I missed. I feel quite ashamed...

Best regards,
 
?

=?ISO-8859-15?Q?Juli=E1n?= Albo

Ney said:
I am having trouble with namespaces and unresolved externals. The
following three files (memoria.h, memoria.cpp and teste.cpp) illustrate
the problem:

You dont't define what a ubyte is. Defining it, your code compiles.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,175
Messages
2,570,942
Members
47,490
Latest member
Finplus

Latest Threads

Top