2

これらの 2019 エラーが発生する理由を理解するのを手伝ってもらえますか? すべてのファイルが正しい場所に保存されていると確信しています。また、ヘッダー ファイルに正しい規則を使用していると思いますか? これは私のシステム プログラミング クラスのラボです。

エラーは次のとおりです。

1>main.obj : エラー LNK2019: 未解決の外部シンボル "public: __thiscall DLL::intDLL::intDLL(void)" (??0intDLL@DLL@@QAE@XZ) が関数 _main で参照されています

1>main.obj : エラー LNK2019: 未解決の外部シンボル "public: __thiscall DLL::intDLL::~intDLL(void)" (??1intDLL@DLL@@QAE@XZ) が関数 _main で参照されています

1>main.obj : エラー LNK2019: 未解決の外部シンボル "public: void __thiscall DLL::intDLL::addFront(int)" (?addFront@intDLL@DLL@@QAEXH@Z) が関数 _main で参照されています

1>main.obj : エラー LNK2019: 未解決の外部シンボル "public: int __thiscall DLL::intDLL::getFront(void)" (?getFront@intDLL@DLL@@QAEHXZ) が関数 _main で参照されています

1>c:\users\josh\documents\visual studio 2012\Projects\Lab10\Debug\Lab10.exe: 致命的なエラー LNK1120: 4 つの未解決の外部

intDLL.h ファイル:

#include <iostream>
using std::cout;
using std::endl;

class intDLL {

public:
    intDLL();
    intDLL(const intDLL &original);
    ~intDLL();
    void addFront(int inValue);
    void addBack(int inValue);
    void setBack();
    int getFront();
    int getBack();

    struct node {
        int value;
        node *next;
        node *prev;
    };

private:
    node *front;
    node *back;

};

intDLL.cpp

#include <iostream>
#include "intDLL.h"
using std::cout;
using std::endl;


intDLL::intDLL() {
    front = 0;
    back = 0;
}

void intDLL::setBack() {
    node *tempNode = new node;
    if(front == 0) {
        return;
    }

    tempNode = front;
    while(tempNode->back != 0) {
        tempNode = tempNode->prev;  
    }

    back = tempNode;
}

void intDLL::addFront(int inValue) {
    if(front == 0) {
        node *newFront = new node;
        newFront->value = inValue;
        newFront->next = 0;
        newFront->prev = 0;
    }
    else {
        node *newFront = new node;
        newFront->value = inValue;
        newFront->prev = front;
        front->next = newFront;
        newFront->next = 0;
        front = newFront;
    }

    setBack();
}

void intDLL::addBack(int inValue) {
    setBack();
    node *newBack = new node;
    newBack -> value = inValue;
    back->prev = newBack;
    newBack->next = back;
    back = newBack;
}

int intDLL::getFront() {
    return front->value;
}

int intDLL::getBack() {
    return back->value;
}

主要:

#include <iostream>
#include "intDLL.h"
using std::cout;
using std::endl;

int main(int argc, char* argv[]) {
    intDLL test = intDLL();
    test.addFront(3);
    test.addFront(4);
    test.addFront(5);
    std::cout << test.getFront() << endl;

    return 0;
}
4

1 に答える 1

0

実際のエラーメッセージが何であるかはわかりませんが、サンプルとして、いくつかの関数を実装していないようです

intDLL(const intDLL &original);
~intDLL();

関数定義をチェックして、宣言されたすべての関数が定義されていることを確認してください。また、すべてのcppファイルがコンパイルおよびリンクされていることを確認してください。

もう1つのエラーはintDLL::node、バックメンバーがないことです

void intDLL::setBack() {
    intDLL::node *tempNode = new node;
     ^^^^ node is defined in intDLL, you need provide scope
    if(front == 0) {
       return;
    }

  tempNode = front;
  while(tempNode->back != 0) {
                  ^^^ intDLL::node has no back member
    tempNode = tempNode->prev;  
   }

  back = tempNode;
}

このSOリンクを参照してください。

于 2013-02-13T00:31:25.700 に答える