C ++ UNIX Ошибка: неопределенный первый ссылочный символ в файле

0

Я пишу код в первый раз в то время, и я столкнулся с ошибкой, указанной в плитке, когда я пытаюсь скомпилировать код, который у меня есть прямо сейчас. В общей ошибке указано "Неопределенный первый ссылочный символ в файле _ZN6My_vecD1Ev/var/tmp/ccwgvyoJ.o ld: fatal: ошибка ссылок на символы. Нет вывода, записанного в a.out". Я не уверен, что это значит или как его исправить, чтобы создать вектор класса My_vec и закончить код.

main.cpp

#include <iostream>
#include <stdexcept>
#include <string>
#include <vector>
#include "My_vec.h"

int main()
{
    try
    {
    // define an object v of My_vec type
    vector<My_vec> v;
    // insert 'B' at the rank 0 into the vector v
    // use the overloaded operator << to display vector elements
    // display the vector v size
}

    catch(exception &error)
    {
         cerr << "Error: " << error.what() << endl;
    }
}

#include <iostream>
#include <stdexcept>
#include "My_vec.h"

My_vec.cpp

void My_vec::set_values(int s, int c, char p)
{
    size = s;
    capacity = c;
    *ptr = 'p';
}

My_vec.h

#ifndef _MY_VEC
#define _MY_VEC

#include <ostream>

using namespace std;

class My_vec 
{   
//member variables
int size, capacity;
char *ptr;

public: 
    //member functions
    My_vec();
    ~My_vec();
    My_vec(const My_vec& vec);
    My_vec& operator=(const My_vec& vec);
    int get_size() const;
    int get_capacity() const;
    char& operator[](int i) const;
    char& operator[](int i);
    bool is_empty() const;
    char& elem_at_rank(int r) const;
    void insert_at_rank(int r, const char& elem);
    void replace_at_rank(int r, const char& elem);
    void remove_at_rank(int r);
    void set_values(int, int, char);    //I Put In
};

ostream& operator<<(ostream& out, const My_vec& vec);
int find_max_index(const My_vec& v,int size);
void sort_max(My_vec& vec);

#endif
  • 0
    Где определения для остальных My_vec -членов My_vec ? И set_values() звучит как ужасная идея, что код принадлежит конструктору.
Теги:
class
vector

1 ответ

2

Чтобы увидеть, что вам не хватает, вам нужно развернуть символ:

echo "_ZN6My_vecD1Ev" | c++filt

он показывает этот символ My_vec::~My_vec(). Очевидно, что вы не реализовали My_vec destructor.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню