簡體   English   中英

Class function 不帶 arguments

[英]Class function does not take arguments

我正在嘗試模擬一些等離子體物理,為此我決定將我的“模擬世界”創建為 class,在“World.h”文件中定義:

#ifndef _WORLD_H
#define _WORLD_H

class World{
    public:
        World(int _Nx, double _x0, double _xf); //Constructor prototype
        
        int _Nx; //Number of nodes
        double _dx; //Cell width
        
        void setTime(double _dt, int _num_ts);
        
    protected:
        double _x0; //System origin
        double _xf; //System ending
        
        double _dt = 0;     //time step length
        int _num_ts;        //number of time steps
};

#endif

class 原型的實現如下:

#include "World.h"

World::World(int Nx, double x0, double xf)
{
    this->_Nx = Nx;
    this->_x0 = x0;
    this->_xf = xf;
    this->_dx = (xf - x0)/(Nx - 1);
    
    //std::cout << Nx;
}

void World::setTime(double dt, int num_ts)
{
    this->_dt=dt;
    this->_num_ts=num_ts;
 }

我遇到的問題是,當我從 main 調用 function "World::setTime(/**/)" 時:

int main()
{
    //Create computational system
    World world(1000, 0.0, 0.1); //(Nx, x0, xm)
    
    World::setTime(world._dx, 10000);

    /*CODE*/

    return 0;
}

編譯器顯示消息:

[錯誤] 在沒有 object 的情況下無法調用成員 function 'void World::setTime(double, int)'

引用作為參數給出的 'int num_ts' 的值。 問題是什么? 它指的是什么object?

我正在閱讀這篇文章:

不能調用沒有 object 的成員 function

但我無法在其中應用解決方案,因為我在 class 中寫下了一個構造函數。 謝謝您的回復!

我認為問題在於您正在調用已定義 class的成員 function 而不是object 為了解決這個問題,我會嘗試把:

World world(1000,0.0,0.1); //(Nx,x0,xm)

world.setTime(world._dx, 10000);

這樣,您將調用一個 object ,您已將其定義為World類型的“世界”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM