C ++未定义的引用

时间:2013-05-10 17:45:43

标签: c++ linker

编译两个类时遇到问题。

MemoryTrie.h:

#ifndef MEMORYTRIE_H
#define MEMORYTRIE_H

template <typename T>
class MemoryTrie
{
    public:
        ...
        T & operator [](const char * key);

    private:
        ...
};

#endif  /* MEMORYTRIE_H */

MemoryTrie.cpp:

#include "MemoryTrie.h"

template <typename T>
T & MemoryTrie<T>::operator [](const char * key)
{
    ...
}

OutputFileTrie.h:

#ifndef OUTPUTFILETRIE_H
#define OUTPUTFILETRIE_H

#include "MemoryTrie.h"

template <typename T>
class OutputFileTrie
{
    public:
        T & operator [](const char * key);

    private:
        MemoryTrie<T> memoryTrie;
};

#endif  /* OUTPUTFILETRIE_H */

OutputFileTrie.cpp:

#include "OutputFileTrie.h"

template <typename T>
T & OutputFileTrie<T>::operator [](const char * key)
{
    return memoryTrie[key];
}

主要是:

OutputFileTrie<int> trie;

Linker说:OutputFileTrie.h:9:对MemoryTrie :: MemoryTrie()的未定义引用。我只运行了这四个命令:

g++ -Wall -pedantic -g -c MemoryTrie.cpp
g++ -Wall -pedantic -g -c OutputFileTrie.cpp
g++ -Wall -pedantic -g -c main.cpp
g++ MemoryTrie.o OutputFileTrie.o main.o -o out

我做得对吗?我错过了什么错误?感谢您提供任何帮助。

0 个答案:

没有答案