使用向量、类和继承;在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中获取未解析的外部符号[重复]的主要内容,如果未能解决你的问题,请参考以下文章