LINK2019错误,不知道为什么
LINK2019 error, not sure why
我正在尝试编译我的代码并不断得到他的错误:
Error 1 error LNK2019: unresolved external symbol "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class iOrder const &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABViOrder@@@Z) referenced in function _main C:Userson3m1_000documentsvisual studio 2013ProjectsAssign4Assign4a4main.obj Assign4
我完全不确定为什么会发生这种情况。我在那个错误中看到的唯一看起来甚至像在我的代码中一样的东西是 iOrder。如果有人能帮助我给出任何关于为什么会发生这种情况的想法,那就太好了。
iorder 标头:
std::ostream& operator<<(std::ostream& os, const iOrder& order);
主要:
#include <iostream>
#include "GS1Prefix.h"
#include "Order.h"
#define MAXORDERS 100
char menu(std::istream& is);
bool style(std::istream& is, char&);
int main() {
char choice;
int noOrders = 0;
iOrder* order[MAXORDERS];
Prefix prefix("prefixRanges.txt");
std::cout << "Bookstore Order Processorn"
<< "=========================n";
// process user input
do {
choice = menu(std::cin);
std::cout << std::endl;
switch (choice) {
case 'P':
{
EAN ean;
if (ean.read(std::cin, prefix)) {
int index = -1, created = false;
for (int i = 0; i < noOrders && index == -1; i++)
if (ean == order[i]->getEAN())
index = i;
if (index == -1)
if (noOrders < MAXORDERS) {
index = noOrders;
order[noOrders++] = new Order(ean);
created = true;
}
else
std::cerr << "No space for more orders!" << std::endl;
if (!order[index]->add(std::cin) && created)
delete order[--noOrders];
}
}
break;
case 'S':
{
EAN ean;
if (ean.read(std::cin, prefix)) {
int index = -1, created = false;
for (int i = 0; i < noOrders && index == -1; i++)
if (ean == order[i]->getEAN())
index = i;
if (index == -1)
if (noOrders < MAXORDERS) {
index = noOrders;
order[noOrders++] = new SpecialOrder(ean, "");
created = true;
}
else
std::cerr << "No space for more orders!" << std::endl;
if (!order[index]->add(std::cin) && created)
delete order[--noOrders];
}
}
break;
case 'A':
{
EAN ean;
if (ean.read(std::cin, prefix)) {
int index = -1;
for (int i = 0; i < noOrders && index == -1; i++)
if (ean == order[i]->getEAN())
index = i;
if (index != -1)
order[index]->add(1);
else
std::cerr << "No order for " << ean << " found!" << std::endl;
}
}
break;
case 'D':
{
EAN ean;
if (ean.read(std::cin, prefix)) {
int index = -1;
for (int i = 0; i < noOrders && index == -1; i++)
if (ean == order[i]->getEAN())
index = i;
if (index != -1)
order[index]->receive(std::cin);
else
std::cerr << "No order for " << ean << " found!" << std::endl;
}
}
break;
case 'F':
{
char s;
if (style(std::cin, s))
for (int i = 0; i < noOrders; i++)
order[i]->getEAN().style(s);
}
break;
case 'V':
std::cout << " EAN Ordered Delivered Instructionsn";
std::cout << "--------------------------------------------------n";
for (int i = 0; i < noOrders; i++) {
std::cout << *order[i] << std::endl;
}
break;
}
} while (choice != 'Q');
std::cout << "nSigning off ... " << std::endl;
// deallocate order memory
for (int i = 0; i < noOrders; i++)
delete order[i];
}
// menu prompts for and accepts an option selection from standard input and
// returns the character identifying the selected option
//
char menu(std::istream& is) {
char c;
int ok = false;
std::cout << 'n';
std::cout << "Please select from the following options :n";
std::cout << " P - Place an order with a publishern";
std::cout << " S - Place a special order with a publishern";
std::cout << " A - Add one copy to an existing ordern";
std::cout << " D - Record a delivery from a publishern";
std::cout << " F - Change output stylen";
std::cout << " V - View status of books on ordern";
std::cout << " Q - Quitn";
do {
std::cout << " Your selection : ";
c = ' ';
is.get(c);
if (c >= 'a' && c <= 'z')
c -= 'a' - 'A';
if (is.fail()) {
is.clear();
is.ignore(2000, 'n');
std::cerr << " Invalid input. Try again.n";
}
else if (c == 'n') {
; // no input - try again
}
else if (c != 'P' && c != 'S' && c != 'A' && c != 'D' && c != 'V'
&& c != 'Q' && c != 'F') {
is.ignore(2000, 'n');
std::cerr << " Invalid Character. Try again.n";
}
else if (is.get() != 'n') {
is.ignore(2000, 'n');
std::cerr << " Trailing Characters. Try Again.n";
}
else if (c == 'P' || c == 'S' || c == 'A' || c == 'D' || c == 'V'
|| c == 'Q' || c == 'F')
ok = true;
} while (ok == 0);
return c;
}
// style prompts for and accepts the style from input stream is
//
bool style(std::istream& is, char& s) {
bool rc = false, ok = false;
char c;
do {
std::cout << " EAN Style ('-', ' ', '\n' or '0' to quit) : ";
c = ' ';
is.get(c);
if (is.fail()) {
is.clear();
is.ignore(2000, 'n');
std::cerr << " Invalid input. Try again.n";
}
else if (c != '-' && c != ' ' && c != 'n' && c != '0') {
is.ignore(2000, 'n');
std::cerr << " Invalid Character. Try again.n";
}
else if (c == '0') {
if (is.get() != 'n') {
is.ignore(2000, 'n');
std::cerr << " Trailing Characters. Try Again.n";
}
else
ok = true;
}
else if (c == 'n') {
ok = true;
s = ' ';
rc = true;
}
else if (is.get() != 'n') {
is.ignore(2000, 'n');
std::cerr << " Trailing Characters. Try Again.n";
}
else if (c == '-' || c == ' ') {
ok = true;
s = c;
rc = true;
}
} while (!ok);
return rc;
}
声明并使用此运算符:
std::ostream& operator<<(std::ostream& os, const iOrder& order);
但是您还没有为它编写任何代码(或者它不在显示的代码中)
相关文章:
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 我不知道为什么这段代码会让核心被转储?
- 反转字符串.不知道为什么这个逻辑是错误的.C++
- 没有函数模板的实例与我不知道为什么的参数列表匹配
- if-else 语句仅按特定顺序工作,我不知道为什么
- DirectX 11 引擎在第三次代码改进后没有突然运行,我不知道为什么
- 函数抛出seg错误,我不知道为什么
- 我不知道为什么复制构造函数的调用在 c++ 中不稳定
- 随着时间的推移,我的程序越来越慢,我不知道为什么.内存泄漏
- 分段故障(核心转储)-不知道为什么
- "错误:在'.标记'之前出现预期的主表达式,我不知道为什么
- 我正在制作c ++代码,但发生错误我不知道为什么
- std::cout << glGetString(GL_RENDER) << std::endl;抛出错误但不GL_Renderer或GL_Verision,我不知道为什么?
- 不知道为什么它不会停止循环
- 我的Arduino串行命令行不起作用,我不知道为什么
- 我正在编写一个拆分为 3 的合并排序,我不知道为什么它不起作用
- C++单例模式代码无法运行,不知道为什么?
- 为什么我的结果中有 0?我不知道它从哪里来
- 我不知道为什么我的矢量无法推回
- 罗马数字输出C++总是"-858993460",不知道为什么?