C++ 类初始化器错误-C++;
我试图在C++中创建一个复数类,但是对于类的初始化器来说,我得到了一个奇怪的错误,这里是错误的截图: 这是我的代码: main.cpp:C++ 类初始化器错误-C++;,c++,class,initialization,C++,Class,Initialization,我试图在C++中创建一个复数类,但是对于类的初始化器来说,我得到了一个奇怪的错误,这里是错误的截图: 这是我的代码: main.cpp: #include <iostream> #include "cmath" #include "Complexx.h" int main(int argc, const char * argv[]) { complex c(1,1); std::cout << c.realPart << "+" <<c.i
#include <iostream>
#include "cmath"
#include "Complexx.h"
int main(int argc, const char * argv[])
{
complex c(1,1);
std::cout << c.realPart << "+" <<c.imaginaryPart << "i";
return 0;
}
我做错了什么?您似乎没有链接到
复杂(double,double)
构造函数的定义。
这可能是因为您忘记链接Complexx.cpp
(假设cpp文件的名称与头文件相同),或者您完全忘记在链接的Complexx.cpp
文件中定义构造函数
编译main.cpp时只需运行以下g++命令(假设您使用的是gcc):
您似乎还没有链接到
复杂(double,double)
构造函数的定义。
这可能是因为您忘记链接Complexx.cpp
(假设cpp文件的名称与头文件相同),或者您完全忘记在链接的Complexx.cpp
文件中定义构造函数
编译main.cpp时只需运行以下g++命令(假设您使用的是gcc):
虽然提供了声明,但您还没有为
复杂(double,double)
构造函数提供定义。这就是链接器所抱怨的
将其添加到项目中的.cpp
文件中,该文件包含头文件complexx.h
(可能是complexx.cpp
):
double module()
也可能存在同样的问题,因为您尚未调用链接器,所以不会发出链接器错误。尽管提供了声明,但您尚未为复杂(double,double)
构造函数提供定义。这就是链接器所抱怨的
将其添加到项目中的.cpp
文件中,该文件包含头文件complexx.h
(可能是complexx.cpp
):
double module()
也可能存在同样的问题,因为您还没有调用它,所以不会发出链接器错误。问题就在这里
complex(double realPart, double imaginaryPart);
您已经声明了一个构造函数,但尚未定义它。这就是为什么链接器抱怨未定义的符号complex::complex(double,double)
这可能就是您想要的定义—将这两个参数存储在对象中
complex(double realPart, double imaginaryPart)
: realPart(realPart)
, imaginaryPart(imaginaryPart)
{ }
这些参数的名称并不重要。C++不会推断出它们与成员变量的名称相同,它们应该被复制到对象。 问题在这里。
complex(double realPart, double imaginaryPart);
complex(double realPart, double imaginaryPart)
: realPart(realPart)
, imaginaryPart(imaginaryPart)
{ }
您已经声明了一个构造函数,但尚未定义它。这就是为什么链接器抱怨未定义的符号complex::complex(double,double)
这可能就是您想要的定义—将这两个参数存储在对象中
complex(double realPart, double imaginaryPart)
: realPart(realPart)
, imaginaryPart(imaginaryPart)
{ }
这些参数的名称并不重要。C++不会推断出它们与成员变量的名称相同,它们应该被复制到对象。定义在哪里?你的实现在哪里?你在构建它并链接它吗?你没有定义构造函数。实际上-定义在哪里?你的实现在哪里?你在构建和链接它吗?你没有定义构造函数。实际上-
complex(double realPart, double imaginaryPart)
: realPart(realPart)
, imaginaryPart(imaginaryPart)
{ }