Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 处理向量、类和继承;获取VS中未解析的外部符号_C++_Class_Inheritance_Vector - Fatal编程技术网

C++ 处理向量、类和继承;获取VS中未解析的外部符号

C++ 处理向量、类和继承;获取VS中未解析的外部符号,c++,class,inheritance,vector,C++,Class,Inheritance,Vector,此赋值的目的是将十进制转换为二进制。我必须遵循算法的伪代码来完成转换过程,但其余部分取决于我们如何构造程序。然而,我们必须使用类并且至少有一个继承。我基本上已经完成了代码,但我似乎无法测试它,因为我只是看不到一些非常简单的东西。我一直在尝试各种各样的事情,但似乎我只是在断断续续地编写代码,根本不知道到底出了什么问题。这是我的源代码,非常感谢您的帮助 当您运行代码时,我得到一个LNK2019:未解决的外部符号错误 #include <iostream> #include <vec

此赋值的目的是将十进制转换为二进制。我必须遵循算法的伪代码来完成转换过程,但其余部分取决于我们如何构造程序。然而,我们必须使用类并且至少有一个继承。我基本上已经完成了代码,但我似乎无法测试它,因为我只是看不到一些非常简单的东西。我一直在尝试各种各样的事情,但似乎我只是在断断续续地编写代码,根本不知道到底出了什么问题。这是我的源代码,非常感谢您的帮助

当您运行代码时,我得到一个LNK2019:未解决的外部符号错误

#include <iostream>
#include <vector>

using namespace std;


class binaryConverter
{
public:
    void print();
    binaryConverter();
    binaryConverter(int);
    void addBit(int);

private:
    vector<int> binary;
};


class decimalToBinary : public binaryConverter {

public:
    void print();
    void process(int);
    decimalToBinary();


private:

};

void binaryConverter::addBit(int d){
    binary.push_back(d);
}
void decimalToBinary::process(int num)
{
    if (num >= 128){
        num = 128 - num;
        decimalToBinary::addBit(1);
    }
    else{
        decimalToBinary::addBit(0);
    }
    if (num >= 64 && num < 128){
        num = 64 - num;
        decimalToBinary::addBit(1);
    }
    else{
        decimalToBinary::addBit(0);
    }
    if (num >= 32 && num < 64){
        num = 32 - num;
        decimalToBinary::addBit(1);
    }
    else{
        decimalToBinary::addBit(0);
    }
    if (num >= 16 && num < 32){
        num = 16 - num;
        decimalToBinary::addBit(1);
    }
    else{
        decimalToBinary::addBit(0);
    }
    if (num >= 8 && num < 16){
        num = 8 - num;
        decimalToBinary::addBit(1);
    }
    else{
        decimalToBinary::addBit(0);
    }
    if (num >= 4 && num < 8){
        num = 4 - num;
        decimalToBinary::addBit(1);
    }
    else{
        decimalToBinary::addBit(0);
    }
    if (num >= 2 && num < 4){
        num = 2 - num;
        decimalToBinary::addBit(1);
    }
    else{
        decimalToBinary::addBit(0);
    }
    if (num >= 1 && num < 2){
        num = 1 - num;
        decimalToBinary::addBit(1);
    }
    else{
        decimalToBinary::addBit(0);
    }
}

void binaryConverter::print(){
    for (vector<int>::iterator it = binary.begin(); it != binary.end(); it++){
        cout << *it << endl;
    }
}


int main(){

    decimalToBinary test;

    test.process(150);
    test.print();


    return 0;
}

通过阅读您的代码,我看到:

binaryConverter();
binaryConverter(int);

您声明了构造函数,但没有定义它们


而且您的decimalToBinary::print方法也没有定义。

当您为类创建对象时,如果一个类没有配备构造函数,编译器将为一个类生成代码,调用隐式默认构造函数

分贝试验;调用decimalToBinary::decimalToBinary

创建对象不需要声明和定义构造函数。 如果声明构造函数,则必须定义它们。否则,您将得到构造函数的链接错误


如果要使用binaryConverter类中定义的print方法,则无需在decimalToBinary类中声明print方法。

可能您尚未提供某些方法的定义。请查看整个错误行。
decimalToBinary();