繁体   English   中英

为什么错误不断返回“变量的类型不完整”?

[英]Why does the error keep returning "variable has incomplete type void"?

我正在尝试编写一个代码来解决两个带电粒子之间的力的库仑定律方程(使用 void),但我不断收到错误消息:变量具有不完整的类型“void”。 代码应该测量 r=1,然后循环(每次给 r 加 3)并在 r < 60 时完成。它将输出所有这些结果。

int main() {
float Q_one;
float Q_two;
int rad = 1;
double const k = 8990000000;
cout << "Enter the charge of particle 1." << endl;
cin >> Q_one;
cout << "Enter the charge of particle 2." << endl;
cin >> Q_two;
void force (float Q_one, float Q_two, int rad);
void force = ((k * ((Q_one * .000001) * (Q_two * .000001))) / (rad * rad));
while (rad <= 60) {
    {
        force (Q_one, Q_two, rad);
        cout << "Radius " << (rad) << " ";
        cout << "Force " << (force) << endl;
        rad += 3;
    }
}

}

我试过重新排列这多种方式并改变我定义“力”的方式,但似乎没有任何效果。 关于如何解决这个问题的任何想法?

我不确定你想做什么。

修复了一些错误后,我得到了这个:

#include <iostream>
#include <type_traits>
#include <vector>
using namespace std;
int main() {
    float Q_one;
    float Q_two;
    int rad = 1;
    double const k = 8990000000;
    cout << "Enter the charge of particle 1." << endl;
    cin >> Q_one;
    cout << "Enter the charge of particle 2." << endl;
    cin >> Q_two;
    auto force = [k](float Q_one, float Q_two, int rad) { return (k * Q_one * .000001 * Q_two * .000001) / (rad * rad); };
    while (rad <= 60) 
        {
            auto result = force (Q_one, Q_two, rad);
            cout << "Radius " << (rad) << " ";
            cout << "Force " << (result) << endl;
            rad += 3;
        }
}

演示:魔杖盒

它看起来像你想要的吗?

我假设您正在尝试创建一个函数来计算力。 例如,您可以将其设为 lambda 函数:

    auto force = [=](float Q_one, float Q_two, int rad)
    {  return ((k * ((Q_one * .000001) * (Q_two * .000001))) / (rad * rad)); };

然后你在循环中调用它并将它分配给让我们说F像这样:

    while (rad <= 60) {
            double F = force(Q_one, Q_two, rad);
            cout << "Radius " << (rad) << " ";
            cout << "Force " << (F) << endl;
            rad += 3;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM