0

私は C++ を学んでいて、授業を行っているところです。

すべてを正しく作成したと思っていましたが、コードをクリーンアップ/ビルドしようとするとエラーが発生します。

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .clean-conf
rm -f -r build/Debug
rm -f dist/Debug/GNU-MacOSX/hw4


CLEAN SUCCESSFUL (total time: 57ms)

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
"/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/GNU-MacOSX/hw4
mkdir -p build/Debug/GNU-MacOSX
rm -f build/Debug/GNU-MacOSX/karavites_william_oct7_homework.o.d
g++    -c -g -MMD -MP -MF build/Debug/GNU-MacOSX/karavites_william_oct7_homework.o.d -o build/Debug/GNU-MacOSX/karavites_william_oct7_homework.o karavites_william_oct7_homework.cpp
karavites_william_oct7_homework.cpp: In function 'void insertAtEnd(int)':
karavites_william_oct7_homework.cpp:85: warning: NULL used in arithmetic
mkdir -p build/Debug/GNU-MacOSX
rm -f build/Debug/GNU-MacOSX/main.o.d
g++    -c -g -MMD -MP -MF build/Debug/GNU-MacOSX/main.o.d -o build/Debug/GNU-MacOSX/main.o main.cpp
mkdir -p dist/Debug/GNU-MacOSX
g++     -o dist/Debug/GNU-MacOSX/hw4 build/Debug/GNU-MacOSX/karavites_william_oct7_homework.o build/Debug/GNU-MacOSX/main.o 
Undefined symbols for architecture x86_64:
  "BookList::printerr()", referenced from:
      _main in main.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-MacOSX/hw4] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2


BUILD FAILED (exit value 2, total time: 469ms)

プロジェクトには 3 つのファイルがあります。

  • main.cpp
  • karavites_william_oct7_homework.cpp
  • karavites_william_oct7_homework.h

ヘッダー ファイルに関数とクラスを定義し、クラス (class.cpp) ファイルに文字列を出力してすべてをテストする単純なメソッドを定義しました。

これは、クラスを呼び出し/作成する私のメインファイルのようです:

#include <cstdlib>
#include "karavites_william_oct7_homework.h"
#include <iostream>

using namespace std;
using std::cout;
using std::cin;

int ch;

/*
 * 
 */


int getNum(int cho) {
    int ans;
    switch (cho) {
        case 1: cout << "Please type in the ISBN you wish to search\\insert\\delete\n";
            cin >> ans;
            break;
        case 2: cout << "Please type in the position of the element you wish to delete/insert\n";
            cin >> ans;
            break;
    }

    return ans;

}

int main(int argc, char** argv) {
    BookList bl;


    bl.printerr();

    return 0;
}

class1.h

/* 
 * File:   karavites_william_oct7_homework.h
 * Author: willkara
 *
 * Created on October 7, 2013, 9:21 PM
 */



#ifndef KARAVITES_WILLIAM_OCT7_HOMEWORK_H
#define KARAVITES_WILLIAM_OCT7_HOMEWORK_H
#include <vector>

class BookList {
public:
    BookList();


    void insertAtEnd(int new_element);
    void insertAtLocation(int new_element, int pos);
    int linSearch(int isbn);
    int binSearch(int element);
    void deleteByPosition(int position);
    void deleteByItem(int item);
    void printerr();

    void print();
    int menu();
    int countCurrent();
    void bubbleSort();
    void fixNulls();
    void selectionSort();

private:

    static int lSize;

    int bList[20];
    bool sorted;
    int p;

};

#endif  /* KARAVITES_WILLIAM_OCT7_HOMEWORK_H */

booklist クラスにはたくさんのメソッドがありますが、行を出力する単純なメソッドを取得することさえできません。

#include "karavites_william_oct7_homework.h"
#include <iostream>

using namespace std;
using std::cout;
using std::cin;

int bList[20];
int lSize = 20;
bool sorted;
int c;

BookList::BookList() {

}


void printerr() {
    cout << "I will hopefully work this time.\n";
}

どこかに宣言がありませんか?Mac OSX 10.7.5 で NetBeans 7.3.1 を使用して開発しています。

4

1 に答える 1