使用向量、类和继承;在VS中获取未解析的外部符号[重复]

Posted

技术标签:

【中文标题】使用向量、类和继承;在VS中获取未解析的外部符号[重复]【英文标题】:Working with vectors, classes and inheritance; getting unresolved external symbol in VS [duplicate] 【发布时间】:2015-10-10 14:23:23 【问题描述】:

这个赋值的目的是将十进制转换为二进制。我必须按照算法的伪代码进行转换过程,但其余的取决于我们如何构建程序。但是,我们必须使用类并且至少有一个继承。我的代码大部分都完成了,但我似乎无法测试它,因为我根本看不到一些超级简单的东西。我一直在尝试各种事情,但似乎我只是在砍代码,并没有真正知道什么是错误的。这是我的源代码,任何帮助表示赞赏。

运行代码时,我收到 LNK2019: unresolved external symbol 错误。

#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;

【问题讨论】:

可能你没有提供一些方法的定义。请查看整个错误行。 【参考方案1】:

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

binaryConverter();
binaryConverter(int);

decimalToBinary();

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

而且你的decimalToBinary::print() 方法也没有定义。

【讨论】:

【参考方案2】:

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

decimalToBinary test; 呼叫decimalToBinary:: decimalToBinary();

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

如果您想使用binaryConverter 类中定义的打印方法,则无需在decimalToBinary 类中声明打印方法。

【讨论】:

以上是关于使用向量、类和继承;在VS中获取未解析的外部符号[重复]的主要内容,如果未能解决你的问题,请参考以下文章

error LNK2019: 无法解析的外部符号

错误 LNK2001:未解析的外部符号

无法解析的外部符号

LNK2019:未解析的外部符号,在不存在的 *.obj 文件中搜索

LNK2019 无法解析的外部符号

C++无法解析的外部符号