我有一个常见的LNK2019错误,无法弄清楚出了什么问题。
这是我的解决方案资源管理器:
这是我的Rectangle.cpp
:
class Rectangle
{
public:
int getArea()
{
return this->width*this->height;
}
int width;
int height;
};
这是我的Rectangle.h
:
#pragma once
class Rectangle
{
public:
int getArea();
int width;
int height;
};
这是我的Functions.cpp
:
#include <iostream>
#include "Rectangle.h";
using namespace std;
int main()
{
Rectangle r3{ 2, 3 };
cout << r3.getArea();
return 0;
}
我是C ++的新手,似乎我做的一切都正确,但我仍然遇到错误。
答案 0 :(得分:2)
当你想编写类函数的主体时,你需要这样写:
#include "Rectangle.h"
int Rectangle::getArea()
{
return this->width*this->height;
}
您无需将类重新定义为cpp文件。
您可以在标题(.h,.hpp)中定义所有内容,将其包含在cpp文件(#include "Rectangle.h"
)中,但不得重新声明头文件中的所有内容。
顺便说一下,由于您正在编写方法,因此可以width
直接访问成员变量,而无需使用this->width
。
但是,我建议您在编写自己的类时使用约定。
我的约定是用m
作为成员变量的前缀。 (在您的情况下,它会为您提供mWidth
或mHeight
)。
还有其他人拥有其他约定,例如m_variable
或variable_
。
答案 1 :(得分:2)
Rectangle.cpp应该是这样的:
#include "Rectangle.h"
int Rectangle::getArea() {
return this->width*this->height;
}
你不应该在源文件中重新定义类定义,因为你已经在头文件中有了它!