1

我在编译两个类时遇到问题。

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)
{
    ...
}

输出文件Trie.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 */

输出文件Trie.cpp:

#include "OutputFileTrie.h"

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

主要是:

OutputFileTrie<int> trie;

链接器说: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

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

4

0 回答 0