c++ - 将结构类型与函数一起使用

标签 c++

main.cpp

#include "Header.h"
SolveSE(1, 2, 3);

标题.h

struct Solution;
Solution SolveSE(double ax, double bx, double c);

SSE.cpp

#include "Header.h"
struct Solution
{
    size_t count;
    double *roots;
};

Solution SolveSE(double ax, double bx, double c) 
{   
    if (fabs(ax)<1e-5)
    {
        throw std::invalid_argument("a should not be a zero");
    }
    double Discriminant = bx - 4 * ax * c;

    if (Discriminant > 0)
    {
        double x1 = -bx + sqrt(Discriminant) / 2 * ax;
        double x2 = -bx - sqrt(Discriminant) / 2 * ax;
        double roots[] = { x1, x2 };
        return { 2, roots };
    }
    if (Discriminant == 0)
    {
        double x1 = -bx + sqrt(Discriminant) / 2 * ax;
        double roots[] = { x1};
        return { 1, roots };
    }
    if (Discriminant < 0)
    {
        return { 0};
    }
    return {};
}

来自 Visual Studio 的错误:

严重性代码描述项目文件行抑制状态 错误 C2027 使用未定义类型“解决方案”SolveSquareEquation c:\users\dima\documents\visual studio 2017\projects\solvesquareequation\solvesquareequation\main.cpp 8

float 提示说,返回类型“解决方案”不完整。

我的函数实现有问题吗?

测试.cpp

TEST_METHOD(TestSSE)
{
    Assert::AreEqual<Solution>(SolveSE(1,3,-4), {2, {4, 1}})
}

最佳答案

你应该将结构移动到头文件:

struct Solution
{
    size_t count;
    double *roots;
};

关于c++ - 将结构类型与函数一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46343461/

相关文章:

c++ - Visual Studio 编译器错误

c++ - 转换变量类型(或解决方法)

c++ - 如何使用 C++11 的最小 gc 支持

c++ - 如何在 OpenCV (3.0.0) OCL 中启动自定义 OpenCL 内核?

c++ - 用于 protobuf 转换的 Braced-init 样式构造函数

c++ - ld:osX 机器上的重复符号 [libpmk]

c++ - 两个项目之间的 MFC CString 链接器错误

python - 用于Python的带有C++的简单SWIG可以编译,但是输出似乎不正确?

c++ - 在 C++ 中设置和访问成员变量

c++ - 默认模板类参数混淆了 g++?