私が取り組んでいる C++ プログラムについて助けが必要です。
私はオペレーティング システムのクラスを取っているので、最初の数週間は C プログラミングの短期集中コースでしたが、今度は C プログラムを C++ にアップグレードすることになっています。私の教授は私たちにいくつかのサンプル コードを示し、いくつかのチュートリアルを見せてくれましたが、ここまでしか理解できませんでした。
ヘッダー ファイル、関数を実装するための .cpp ファイル、およびテスト ファイル (ここからエラーが発生します) を使用しています。
//dll.h
#ifndef _DLL_H
#define _DLL_H
using namespace std;
#include <iostream>
#include <string>
class dll{
public:
typedef struct _Node
{
struct _Node *pNode;
struct _Node *nNode;
int nodeValue;
}sNode;
typedef struct
{
sNode first;
}DLList;
dll();
~dll();
void init(DLList *DLL,int d);
void sort(DLList *DLL);
void print(DLList *DLL);
};
#endif
メインの .cpp ファイル:
//dll.cpp
using namespace std;
#include <iostream>
#include <string>
#include <stdio.h>
#include <cstdlib>
#include "dll.h"
dll::dll(){
cout<<"Constructor called"<<endl;
}
dll::~dll(){
cout<<"Destructor called"<<endl;
}
void dll::init(DLList *DLL, int d)
{
sNode *node;
sNode *pNode;
pNode = &(DLL-> first);
pNode->pNode = NULL;
int i;
for(i=0; i<d; i++)
{
node = (sNode*) malloc(sizeof(node));
node-> nodeValue = rand();
node-> pNode = pNode;
node-> nNode = NULL;
pNode-> nNode = node;
pNode = node;
}
}
void dll::print(DLList *DLL)
{
int i= 1;
sNode *nNode = DLL-> first.nNode;
while(nNode != NULL)
{
cout<<("%d. %d\n",i,nNode-> nodeValue);
cout<<("");
nNode = nNode-> nNode;
i++;
}
}
void dll::sort(DLList *DLL)
{
int change = 1;
while(change== 1)
{
change = 0;
sNode *current = DLL-> first.nNode;
while(current-> nNode != NULL)
{
if(current-> nodeValue > current-> nNode-> nodeValue)
{
int temp = current-> nodeValue;
current-> nodeValue = current-> nNode-> nodeValue;
current-> nNode-> nodeValue = temp;
change = 1;
}
current = current-> nNode;
}
}
}
今、私のエラーがポップアップし続けるテストファイル:
//testDLL.cpp
using namespace std;
#include <iostream>
#include <string>
#include <stdio.h>
#include <cstdlib>
#include "dll.h"
int main()
{
cout<<("Doubly Linked List before sorting: \n");
dll::DLList DLL;
dll *test = new dll();
test.dll::init(&DLL,5);
test.dll::print(&DLL);
test.dll::sort(&DLL);
cout<<("\nDoubly Linked List after sorting: \n");
test.dll::print(&DLL);
return 0;
}
プログラムが作成されたので、コンパイルしようとするたびにこれに遭遇し続けます(Linuxコマンドラインでg ++を使用):
testDLL.cpp: In function ‘int main()’:
testDLL.cpp:17:7: error: request for member ‘init’ in ‘test’, which is of non-class type ‘dll*’
testDLL.cpp:19:12: error: request for member ‘dll:: print’ in ‘test’, which is of non-class type ‘dll*’
testDLL.cpp:21:12: error: request for member ‘dll:: sort’ in ‘test’, which is of non-class type ‘dll*’
testDLL.cpp:25:12: error: request for member ‘dll:: print’ in ‘test’, which is of non-class type ‘dll*’
私はこれに完全に困惑しているので、皆さんが私に与えることができるどんな助けも大歓迎です.