0

我已经为同样的问题工作了三天,对此我无能为力。请帮忙!!

这不是同名问题的重复。名称相似,但问题完全不同。

我被告知可能与外部依赖关系有关。

我正在发布我的所有代码,如果我需要发布更多信息,请询问!

list_test.cpp这做得更多,但这就是它搞砸的地方。

 #include <cctype>       // Provides toupper
 #include <iostream>     // Provides cout and cin
 #include <cstdlib>      // Provides EXIT_SUCCESS
 #include "list.h"  // With value_type defined as double
 #include "Node.h"
 #include "Iterator.h"
 using namespace std;
 using namespace list_1;

 int main( )
 {
     list<double> test;
 }

iterator.h

 // Template CLASS PROVIDED: Iterator 

 #pragma once
 #include "Node.h"

 namespace list_1
 {
template<typename T>
class Iterator
{
    public:
    Iterator<T> (Node<T> *np);
    // precondition: is_item is true
    // post condition n points to the next item in the list
    void operator++();
    // precondition: 
    // postcondition: returns true if there is a valid item
    bool is_item();
    // precondition: is_item == true
    // postcondition returns data that n is pointing at
    T operator* ();

    private:
    Node<T>* n;

};

template<typename T>
Iterator<T>::Iterator (Node<T> *np)
{
    n = np;
}

template<typename T>
void Iterator<T>::operator++()
{
    assert(is_item( ) == true);

    n = n->next;
}

template<typename T>
bool Iterator<T>::is_item()
{
    return (n->data != NULL);
}

template<typename T>
T Iterator<T>::operator* ()
{
    assert(is_item( ) == true);

    return n->data;
}
 }

Node.h

 #pragma once

 namespace list_1
 {
template <typename T>
struct Node
{
    T data;
    Node<T> *next;

    // Constructor
    // Postcondition: 
    Node<T> (T d);
};

template <typename T>
Node<T>::Node(T d)
{
    data = d;
    next = NULL;
}
 }

list.h

 #include "Node.h"
 #include "Iterator.h"

 namespace list_1
 {
template <typename T>
class list
{
    public:
        // CONSTRUCTOR
        list();
        // postcondition: all nodes in the list are destroyed.
        ~list();
        // MODIFICATION MEMBER FUNCTIONS
        //postcondition: entry is added to the front of the list
        void insert_front(const T& entry);
        //postcondition: entry is added to the back of the list
        void add_back(const T& entry);
        // postcondition: all nodes with data == entry are removed from the list
        void remove_all(const T& entry);
        // postcondition: an iterator is created pointing to the head of the list
        Iterator<T> begin(void);
        // CONSTANT MEMBER FUNCTIONS
        // postcondition: the size of the list is returned
        int size( ) const;
    private:
        Node<T>* head;
};

template <typename T>
list<T>::list( )
{
    head = NULL;
}

template <typename T>
list<T>::~list()
{

}

template <typename T>
void list<T>::insert_front(const T& entry)
{
    // head = new node(entry, head);
}

template <typename T>
void list<T>::add_back(const T& entry)
{

}

template <typename T>
void list<T>::remove_all(const T& entry)
{

}

template <typename T>
Iterator<T> list<T>::begin(void)
{
    //Iterator<T> traverse( );
    //return traverse;
}

template <typename T>
int list<T>::size( ) const
{
    int size = 0;
    Node<T> *tempPoint = head;

    for (tempPoint = head; tempPoint != NULL; tempPoint = tempPoint->next)
    {
        size ++;
    }

    return size;
}
 }

这是错误消息:

 1>------ Build started: Project: CS2420LinkedList, Configuration: Debug Win32 ------
 1>list_test.obj : error LNK2019: unresolved external symbol "public: __thiscall list_1::list<double>::~list<double>(void)" (??1?$list@N@list_1@@QAE@XZ) referenced in function _main
 1>list_test.obj : error LNK2019: unresolved external symbol "public: __thiscall list_1::list<double>::list<double>(void)" (??0?$list@N@list_1@@QAE@XZ) referenced in function _main
 1>C:\Users\KyleYas\Documents\Visual Studio 2010\Projects\CS2420LinkedList\Debug\CS2420LinkedList.exe : fatal error LNK1120: 2 unresolved externals
 ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
4

2 回答 2

1

我不一定会捍卫它的使用,但我不认为你的问题是using陈述。当你不这样做时,我看不出有任何理由发生碰撞#include <list>。那将是:
error C2872: 'list' : ambiguous symbol....

根据消息中的内容,我将首先确保list.h它应该在哪里。

此外,您始终可以参考 VS 错误代码,例如您获得的LNK2019 ,并针对您的问题检查示例。

于 2013-01-26T02:20:54.770 回答
1

谢谢你的回答!我发现了问题。我在外部依赖项中有两个相同的 list.h 文件,所以我只是删除了它并编译了它。我不知道它是怎么发生的,我想我的程序设置不正确。

于 2013-01-26T04:53:47.863 回答