gpt4 book ai didi

C++ 无法从 main.cpp 中的另一个文件实例化类

转载 作者:太空宇宙 更新时间:2023-11-04 15:27:08 24 4
gpt4 key购买 nike

我无法让它工作

地址.h

#ifndef ADDR_H
#define ADDR_H

class Foo{
public:
Foo(); // function called the default constructor
Foo( int a, int b ); // function called the overloaded constructor
int Manipulate( int g, int h );

private:
int x;
int y;
};

#endif

地址.cpp

#include "addr.h"


Foo::Foo(){
x = 5;
y = 10;
}
Foo::Foo( int a, int b ){
x = a;
y = b;
}

int Foo::Manipulate( int g, int h ){
return x = h + g*x;
}

主要.cpp

#include "addr.cpp"

int main(){
Foo myTest = Foo( 20, 45 );
while(1){}
return 0;
}

我做错了什么?我收到这些链接器错误:

error LNK2005: "public: int __thiscall Foo::Manipulate(int,int)"(?Manipulate@Foo@@QAEHHH@Z) 已经在 addr.obj c:\Users\christian\documents\visual studio 2010 中定义\Projects\Console Test\Console Test\main.obj

error LNK2005: "public: __thiscall Foo::Foo(int,int)"(??0Foo@@QAE@HH@Z) already defined in addr.obj c:\Users\christian\documents\visual studio 2010\Projects\Console Test\Console Test\main.obj

error LNK2005: "public: __thiscall Foo::Foo(void)"(??0Foo@@QAE@XZ) already defined in addr.obj c:\Users\christian\documents\visual studio 2010\Projects\Console测试\控制台测试\main.obj

错误 LNK1169:找到一个或多个多次定义的符号 c:\users\christian\documents\visual studio 2010\Projects\Console Test\Release\Console Test.exe

如有任何帮助,我将不胜感激!!!

最佳答案

#include "addr.cpp"

您将 .cpp 文件包含到您的 main.cpp 中,这就是导致问题的原因。您应该改为包含头文件,如:

#include "addr.h"  //add this instead, to your main.cpp

因为它的头文件包含 Foo 类的定义

关于C++ 无法从 main.cpp 中的另一个文件实例化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5929402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com