C++ C++;UNIX错误:未定义文件中的第一个引用符号

C++ C++;UNIX错误:未定义文件中的第一个引用符号,c++,class,unix,vector,C++,Class,Unix,Vector,我是一段时间以来第一次编写代码,当我尝试编译我现在拥有的代码时,我遇到了tile中说明的错误。整个错误状态为“文件_ZN6My_vecD1Ev/var/tmp/ccwgvyoJ.o ld:fatal:symbol referenced errors.No output write to a.out中未定义的第一个引用符号”。我不知道这意味着什么,也不知道如何修复它,以使类的向量成为我的向量并完成代码 main.cpp #include <iostream> #include <

我是一段时间以来第一次编写代码,当我尝试编译我现在拥有的代码时,我遇到了tile中说明的错误。整个错误状态为“文件_ZN6My_vecD1Ev/var/tmp/ccwgvyoJ.o ld:fatal:symbol referenced errors.No output write to a.out中未定义的第一个引用符号”。我不知道这意味着什么,也不知道如何修复它,以使类的向量成为我的向量并完成代码

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"
我的车

#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
\ifndef\u MY\u VEC
#定义我的向量
#包括
使用名称空间std;
给我上课
{   
//成员变量
int大小、容量;
char*ptr;
公众:
//成员函数
我的_vec();
~My_vec();
My_vec(const My_vec&vec);
My_vec&operator=(const My_vec&vec);
int get_size()常量;
int get_capacity()常量;
字符和运算符[](int i)常量;
字符和运算符[](int i);
bool是_empty()常量;
在秩(int r)常数处的字符和元素;
在列(int r、const char和elem)处插入无效字符;
无效替换列(int r、const char和elem);
在等级(int r)处无效删除;
void set_值(int,int,char);//我放入
};

ostream&operator要查看缺少的内容,您需要对符号进行demangle处理:

echo "_ZN6My_vecD1Ev" | c++filt

它显示此符号
My\u vec::~My\u vec()
。显然你没有实现My_vec的析构函数。

My_vec的其他成员函数的定义在哪里?而且
set_values()
听起来是个糟糕的主意,代码属于构造函数。
echo "_ZN6My_vecD1Ev" | c++filt