我是C ++的新手,试图学习并行编程(来自Basic),很早就被卡住了。
class Particle{
private:
double p_x, p_y, v_x, v_y, mass
public:
Particle(double px, double py, double vx, double vy, double m) : p_x(px), p_y(px), v_x(vx), v_y(vx), mass(m) {};
vector<int> pos () {p_x, p_y}; //doesn't work, expects ';'
vector<int> vel () {v_x, v_y}; //doesn't work, expects ';'
};
我试图用属性pos和vel创建一个类,两个向量。没有什么能与我想要做的事情一起工作 - 我猜想初始化矢量。
谁能告诉我如何做这项工作?或者如果不是这样的话:
class Particle{
private:
double p_x, p_y, v_x, v_y, mass
public:
Particle(double px, double py, double vx, double vy, double m) : p_x(px), p_y(px), v_x(vx), v_y(vx), mass(m) {};
void SetPos(int x, int y) //pseudo code based on Basic
void GetPos() as Vector //pseudo code based on Basic
};
提前感谢您的时间,这对我来说已经是一段砖墙。我已经看过很多其他线程,比如这个在这里,但我不知道能够根据我的需要调整其中任何一个。使我使用VS2012 Cuda 6.0项目的事情复杂化,有时甚至与标准C ++项目的行为不同。由于chrono拒绝在6.5中工作,因此恢复到6.0。会使用标准项目,但我不知道如何(如果可能的话)将Cuda整合到其中。
答案 0 :(得分:1)
()
表示他们的功能,而不是变量;其余的语法对函数定义无效。要么变成它们:
vector<int> pos {p_x, p_y};
或有效功能:
vector<int> pos () {return {p_x, p_y};}
您可能希望它们成为函数,以便它们不会复制其他成员的值,并在其他成员被修改时给出预期结果。