编译两个类时遇到问题。
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
我做得对吗?我错过了什么错误?感谢您提供任何帮助。