我是新来的用c ++编写代码的新手,目前遇到以下问题:
我使用库wykobi来处理几何并解决了我之前的许多问题,但现在我想用它创建一个三角形,并且无法弄清楚如何正确调用所需的方法.
std::string x_str(argv[2]);
std::string y_str(argv[3]);
double x = atof(x_str.c_str());
double y = atof(y_str.c_str());
Run Code Online (Sandbox Code Playgroud)
[...]
double x2;
x2 = double(orientation.direction.x)+angleRightx;
double y2;
y2 = double(orientation.direction.y)+angleRighty;
double x3;
x3 = double(orientation.direction.x)+angleLeftx;
double y3;
y3 = double(orientation.direction.y)+angleLefty;
wykobi::triangle<wykobi::Float,2> clip_boundry = wykobi::make_triangle<wykobi::Float,2>(&x,&y, &x2,&y2, &x3,&y3);
wykobi::polygon<wykobi::Float,2> clipped_polygon;
wykobi::algorithm::sutherland_hodgman_polygon_clipper<wykobi::point2d<wykobi::Float> >(clip_boundry,wykPG,clipped_polygon);
Run Code Online (Sandbox Code Playgroud)
在创建一个圆圈之前我尝试了类似的东西,它完美地运行:
wykobi::circle<wykobi::Float> circle;
circle.x = x;
circle.y = y;
circle.radius = dist;
wykobi::polygon<wykobi::Float,2> clip_boundry = wykobi::make_polygon<wykobi::Float>(circle,100);
wykobi::polygon<wykobi::Float,2> clipped_polygon;
wykobi::algorithm::sutherland_hodgman_polygon_clipper<wykobi::point2d<wykobi::Float> >(clip_boundry,wykPG,clipped_polygon);
Run Code Online (Sandbox Code Playgroud)
现在编译的问题是:
错误:没有匹配函数来调用'make_triangle(double*,double*,double*,double*,double*,double*)'
当我删除&符号时:
wykobi::triangle<wykobi::Float,2> clip_boundry = wykobi::make_triangle<wykobi::Float,2>(x,y, x2,y2, x3,y3);
Run Code Online (Sandbox Code Playgroud)
通讯错误是:
错误:没有匹配函数来调用'make_triangle(double&,double&,double&,double&,double&,double&)'
最后我调用的方法如下:
template<typename T> …Run Code Online (Sandbox Code Playgroud) 我有两种输入情况,我想使用相同的方法.第一种情况是给定的参数是一个std :: string,包含三个数字,我需要转换为int:
std::string pointLine = "1 1 1";
Run Code Online (Sandbox Code Playgroud)
第二种情况是给定参数是一个std :: string,其中包含三个"not yet double",我需要将其转换为双精度数:
std::string pointLine = "1.23 23.456 3.4567"
Run Code Online (Sandbox Code Playgroud)
我写了以下方法:
std::vector<double> getVertexIndices(std::string pointLine) {
vector<int> vertVec;
vertVec.push_back((int) pointLine.at(0));
vertVec.push_back((int) pointLine.at(2));
vertVec.push_back((int) pointLine.at(4));
return vertVec;
Run Code Online (Sandbox Code Playgroud)
}
这适用于第一种情况,但不适用于应该转换为双精度的行.
于是,我的解决方案在C型双分裂.我知道我的分隔符是"".
这就是我现在想出来的,但是在第一次调用以下方法后程序崩溃了:
std::vector<double> getVertexIndices(std::string pointLine) {
vector<double> vertVec;
char * result = std::strtok(const_cast<char*>(pointLine.c_str()), " ");
while(result != NULL ) {
double vert = atof (result);
vertVec.push_back(vert);
char * result = std::strtok(NULL, " ");
}
return vertVec;
Run Code Online (Sandbox Code Playgroud)
}
这可能是JComboBox 弹出菜单没有出现的副本,但因为它是一个相当老的问题并且已经有一段时间没有激活了,而且所有的答案都不是解决方案,这对我的问题有帮助。因此我决定创建一个新问题。
问题如下:我收到了一个以前的同事的申请,它不再在我的公司工作了。现在我尝试将 JComboBox 添加到 JPanel。JCombobox 按预期显示,但其行为方式与 Seth 在他的问题中描述的方式相同:
1)第一次点击展开按钮什么也不做。第二次单击突出显示框的内容,但仍然没有出现弹出窗口。
2) 一旦我点击了按钮并赋予它焦点,向上/向下击键就会正确地循环显示条目。
我已将代码分解为我认为所需编程最少的代码,以便出现问题。(正如提到的问题中的一个评论提到提供 SSCCE,这从未发生过)。
现在这是我可以提供的代码:
public static class CreateProjectDialog extends JFrame {
private Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
public CreateProjectDialog() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
int SZ_INCR = 1;
// Passe Fontgröße an Resolution an:
if (size.width > 1920) {
SZ_INCR = 2;
}
// Initialize Glass Layer
final JPanel panelGlass = (JPanel) getGlassPane();
panelGlass.setLayout(null);
panelGlass.setVisible(true);
private static JPanel licBorrowPanel = null;
licBorrowPanel = new JPanel();
licBorrowPanel.setBounds(0, 20, 1000, 500);
licBorrowPanel.setVisible(false);
licBorrowPanel.setBackground(Color.WHITE); …Run Code Online (Sandbox Code Playgroud)