VisualStudio没有';t接受类实现[C+;+;] 我试图在学习C++的时候从DEV C++到VisualStudio(因为我必须与后者一起工作),但是出于某种原因,在DeVC++中完全工作的一个相当简单的类实现在VisualStudio.中创建了一长串错误。

VisualStudio没有';t接受类实现[C+;+;] 我试图在学习C++的时候从DEV C++到VisualStudio(因为我必须与后者一起工作),但是出于某种原因,在DeVC++中完全工作的一个相当简单的类实现在VisualStudio.中创建了一长串错误。,c++,class,visual-studio-2015,C++,Class,Visual Studio 2015,这些文件很简单: 头文件,用于声明构造函数、变量等 cpp文件,用于实现上述构造函数、函数等 控制台应用程序文件(在visual studio上),以生成“main()”函数 股票2.h #ifndef STOCK2_H_ #define STOCK2_H_ class Stock { public: Stock(); Stock(const char* co, int n = 0, double pr = 0.0); ~Stock(); void show(

这些文件很简单:

  • 头文件,用于声明构造函数、变量等
  • cpp文件,用于实现上述构造函数、函数等
  • 控制台应用程序文件(在visual studio上),以生成“main()”函数
股票2.h

#ifndef STOCK2_H_
#define STOCK2_H_
class Stock
{
public:
    Stock();
    Stock(const char* co, int n = 0, double pr = 0.0);
    ~Stock();
    void show()const;
private:
    std::string company;
    int shares;
    double share_val;
    double total_val;
};
#endif
stock2.cpp

#include "stdafx.h"
#include <iostream>
#include <string>
#include "stock2.h"

Stock::Stock()  //default constructor
{
    //code
}

Stock::Stock(const char* co, int n, double pr)
{
    //code
}

Stock::~Stock()
{
    std::cout << "Stock object has been destroyed" << std::endl;
}

//Methods

void Stock::show() const
{
    //code
}
#包括“stdafx.h”
#包括
#包括
#包括“stock2.h”
Stock::Stock()//默认构造函数
{
//代码
}
股票:股票(常量字符*co,整数n,双pr)
{
//代码
}
股票::~Stock()
{

std::cout您在
控制台应用程序.cpp
中包含了
stock2.cpp
。这意味着
stock2.cpp
中的所有代码现在都编译了两次,链接器会显示错误消息

Error LNK2005 "public: void __thiscall Stock::<...> already defined 


如果在执行此操作时遇到另一个错误,请为此发布错误消息。

如前所述,仅包括头文件。如果项目文件中包含了实现文件,则应自动编译并链接它们。在Visual Studio中,请确保所有源文件都列在解决方案资源管理器视图中。您可以如果缺少,可以将拖放文件拖到该视图中,以将其添加到项目中。请阅读消息并尝试对其进行分析。您的应用程序中包含了
ConsoleApplication1.obj
。它来自何处?您是否已将stock2.h和stock2.cpp添加到项目中?您应该在解决方案资源管理器窗口中同时看到它们。@kn0bbulo Re将所有包含项移动到.cpp文件并重新编译项目(Ctrl+Alt+F7)。它是
#包含“stock2.h”
而不是
#包含“stock2.cpp”
Error LNK2005 "public: void __thiscall Stock::<...> already defined 
#include "stock2.cpp"
#include "stock2.h"