Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用类成员C+调用构造函数+;_C++_Constructor - Fatal编程技术网

C++ 使用类成员C+调用构造函数+;

C++ 使用类成员C+调用构造函数+;,c++,constructor,C++,Constructor,已解决:已使用匿名类实例: particle p1(vec(0,0,0),vec(1,0,0),vec(-0.5,0,0),1) 创建vec实例只是为了构造粒子实例 我正在写一个物理小程序,我正在使用向量(在数学意义上)。向量看起来像 class vec { public: double x, y, z; vec() : x(0), y(0), z(0) {} vec(double xi, double yi, double zi) : x(xi), y(yi), z(

已解决:已使用匿名类实例:

particle p1(vec(0,0,0),vec(1,0,0),vec(-0.5,0,0),1)
创建vec实例只是为了构造粒子实例

我正在写一个物理小程序,我正在使用向量(在数学意义上)。向量看起来像

class vec {
public:
    double x, y, z;
    vec() : x(0), y(0), z(0) {}
    vec(double xi, double yi, double zi) : x(xi), y(yi), z(zi) {}
};
所以我可以创建一个向量,像(1,0,-1)。在另一个对象中,我有

class particle {
public:
    double mass;
    vec pos, vel, acc;
    particle(vec posi, vec veli, vec acci, double m){
        pos = posi; vel = veli; acc = acci; mass = m;
    }
};
我不知道如何构造粒子类的实例。我试过了

particle p1((0,0,0),(1,0,0),(-0.5,0,0),1);

但是我得到了一个错误:没有从double到vec的已知转换。

您似乎放错了括号、变量声明、参数和一些实例化

尝试:


您可以随时调用构造函数。您只需像这样调用它
class\u name(parameters,…)

在您的特定情况下,它将如下所示:

particle p1(vec(0, 0, 0), vec(1, 0, 0), vec(-0.5, 0, 0), 1);
particle p1({0,0,0}, {1,0,0}, {-0.5,0,0}, 1)

实际上,您正在调用逗号运算符:


这是完全相同的事情,但没有那么冗长

你可能想包括这是什么语言,所以结果是这样的。粒子p1(向量(0,0,0),向量(1,0,0),向量(-0.5,0,0),1);获取使用匿名vec变量完成的作业。这将不起作用,因为
particle
的构造函数不接受
vec
-点!为什么<代码>新建-为什么不正常使用值?为什么不必要地增加堆内存管理的负担?
cout << (0, 1, 2) << endl;
particle p1({0,0,0}, {1,0,0}, {-0.5,0,0}, 1)