sách gpt4 ai đã đi

c++ - 外部(人)问题

In lại 作者:行者123 更新时间:2023-11-28 08:29:35 26 4
mua khóa gpt4 Nike

为什么我不能编译这段代码?

   //main
#include "stdafx.h"
#include "X.h"
#include "Y.h"
//#include "def.h"

extern X operator*(X, Y);//HERE ARE DECLARED EXTERNAL *(X,Y) AND f(X)
extern int f(X);
/*GLOBALS*/
X x = 1;
Y y = x;
int i = 2;

int _tmain(int argc, _TCHAR* argv[])
{
i + 10;
y + 10;
y + 10 * y;
//x + (y + i);
x * x + i;
f(7);
//f(y);
//y + y;
//106 + y;
trả về 0;

}

//X
struct X
{
int i;
X(int value):i(value)
{
}
X operator+(int value)
{
return X(i + value);
}
operator int()
{
return i;
}
};
//Y
struct Y
{
int i;
Y(X x):i(x.i)
{ }
Y operator+(X x)
{
return Y(i + x.i);
}
};

//def.h
int f(X x);
X operator*(X x, Y y);
//def.cpp
#include "stdafx.h"
#include "def.h"
#include "X.h"
#include "Y.h"


int f(X x)
{
return x;
}

X operator*(X x, Y y)
{
return x * y;
}

我收到错误信息:
错误2 error LNK2019: unresolved external symbol "int __cdecl f(struct X)"

错误3错误LNK2019:未解析的外部符号“struct X __cdecl operator*(struct X,struct Y)”

另一件有趣的事情是,如果我将实现放在 def.h 文件中,它确实可以毫无错误地编译。但是 def.cpp 呢?为什么我没有收到函数 f(X) 已定义的错误信息?此处不应适用 ODR 规则。我遇到的第二个问题是,如果在 def.cpp 中我将 f 的返回类型从 int 更改为 double intelliSense 强调这是一个错误,但程序仍然可以编译?为什么?

1 Câu trả lời

只需删除单词bên ngoài。无论如何它都是默认值——它对函数声明没有任何意义,在 C++ 中无论如何都应该避免使用它。如果您仍然遇到问题,则可能是 def.cpp 没有被编译到您的程序中。

关于c++ - 外部(人)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2774566/

26 4 0
Bài viết được đề xuất: .net - SHCreateStreamOnFileEx 链接器错误
Bài viết được đề xuất: javascript - AJAX调用liferay门户
Bài viết được đề xuất: javascript - 如何在不使用 getCompulatedStyle 的情况下确定字体粗细
Bài viết được đề xuất: c++ - C/C++ 中的简单 OpenSSL RSA 加密让我头疼
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com