我对Choco和CP完全不熟悉,但是我正在制作一个小模型来解决Steiner树问题,而Choco一直强迫第一个节点无论图形是什么(并且它不正确,我检查过).
我有一个esIntVar 数组,如果边缘在解决方案中== 1,否则== 0.对于vs设置顶点的数组也是如此.我使用数组activeEdgeW能够有一个标量约束,其中coeffs是可变的.然后我只有通道约束,树约束和sum == w约束.并尽量减少w.相当简单,但由于某种原因vs[0] == true总是,任何图形.
我的模型老实说非常简单,我真的不知道它来自哪里:
s = new Solver("Solver");
vs = VF.boolArray("vs", nbV, s);
es = VF.boolArray("es", nbE, s);
w = VF.integer("w", 0, maxW, s);
IntVar[] activeEdgeW = new IntVar[nbE];
for(int i = 0; i < nbE; i++) {
activeEdgeW[i] = VF.enumerated("activeEdgeW["+i+"]", new int[]{0,ws[i]}, s); //Weight is either 0 or ws[i]
ICF.arithm(activeEdgeW[i], "=", ws[i]).reifyWith(es[i]); //weight of edge is ws[i] if edge is in, 0 otherwise
}
UndirectedGraph …Run Code Online (Sandbox Code Playgroud) 对于我正在开发的应用程序,我绝对需要一件小事:我必须能够将一个对象拖到另一个对象上,并且至少其中一个应该注意到它们相交。所以,我的事情是,其中一个项目必须接受 onEntered 信号,即使鼠标在外面按下。
例如:
import QtQuick 1.0
Rectangle{
id: base
width: 500
height: 500
MouseArea{ //Even without this mousearea I don't get what i want.
anchors.fill: parent
//onPressed:{console.log("big")}
}
Rectangle{
id: t
width: 100
height: 100
color: "red"
MouseArea{
anchors.fill: parent
hoverEnabled: true
onPressed:{console.log("little-press")}
onEntered:{console.log("little-enter")}
drag.target: t
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的是按下红色方块外的鼠标按钮,并在不释放按钮的情况下移动它。当鼠标经过红色矩形时,我希望发出 onEntered 信号。我不明白为什么不发出它,因为 onEntered 应该只关心 mouseArea 内的鼠标,而不是按钮。
知道怎么做吗?
非常感谢。
我有一个非常愚蠢的问题(我认为).很长一段时间不用C++编写代码,但我无法弄清楚这个问题.我有这门课:
#include <QList>
class Node {
private:
QList<Node*> _adjacent;
public:
Node();
bool isConnectedTo(Node* n) const;
};
Run Code Online (Sandbox Code Playgroud)
这个实现isConnectedTo():
bool Node::isConnectedTo(Node* n) const{
return _adjacent.contains(n) && n->_adjacent.contains(this);
}
Run Code Online (Sandbox Code Playgroud)
我return在行中收到以下错误:
Node.cpp: In member function ‘const bool Node::isConnectedTo(Node*) const’:
Node.cpp:25:60: error: invalid conversion from ‘const Node* const’ to ‘Node*’ [-fpermissive]
In file included from /usr/include/qt5/QtCore/QList:1:0,
from Node.hpp:5,
from Node.cpp:1:
/usr/include/qt5/QtCore/qlist.h:913:27: error: initializing argument 1 of ‘bool QList<T>::contains(const T&) const [with T = Node*]’ [-fpermissive]
Run Code Online (Sandbox Code Playgroud)
我认为,既然这个方法是常数,那么this就是const Node* const …
我正在开发一个名为“FloatingMenu”的类(应该用 C++ 管理菜单),并且在文件 FloatingMenu.qml 中为 GUI 提供了 QML 版本。我有一个文件 main.qml,其中有几个矩形和一个 FloatingMenu,它按预期显示。现在,如果我执行 qmlRegisterType("EasyGraph", 1,0, "FloatingMenu"); 在我的 main.cpp 中,FloatingMenu 的图形部分消失了。
这是我的代码:
int main(int argc, char* argv[]){
QGuiApplication app(argc, argv);
//Register all the needed types in QML.
qmlRegisterType<FloatingMenu>("EasyGraph", 1,0, "FloatingMenu");
//The only window known as QDeCView in QML.
QQuickView* view = new QQuickView();
view->setMinimumHeight(100);
view->setMinimumWidth(100);
view->setResizeMode(QQuickView::SizeRootObjectToView);
//Context, to set properties from c++ to QML
//QQmlContext* cxt = view->rootContext();
//Load the base.
view->setSource(QUrl::fromLocalFile("../qml/MainWindow.qml"));
view->show();
//FloatingMenu* menu = view->rootObject()->findChild<FloatingMenu*>("mainMenu"); //When registered, this works
return app.exec(); …Run Code Online (Sandbox Code Playgroud) 我试图将插件添加到TypeScript编译器,所以我添加了代码并编译了tsc.ts。它可以正确编译,但是当我运行时,它缺少了io.ts中声明的一些变量。我删除了更改,但仍然无法使用。所以我尝试了这个:
文件:a.ts
var a : number = 5;
Run Code Online (Sandbox Code Playgroud)
文件:b.ts
///<reference path='a.ts' />
console.log(a);
Run Code Online (Sandbox Code Playgroud)
然后编译:tsc b.ts这给了我a.js和b.js。当我尝试运行b.js时node b.js,该变量a未定义。这是以下内容b.js:
///<reference path='a.ts' />
console.log(a);
Run Code Online (Sandbox Code Playgroud)
因此a未定义是有道理的,因为a该文件中没有该位置,所以也没有a.ts。
我编译错误还是执行错误..还是什么?
我是第一次使用OpenSceneGraph而且我有点迷失因为文档真的不那么清楚......
所以,我有这个代码加载带有房子的obj文件,我已经淹没了一个小盒子,我想要"人".所以现在,我不想在那里放置那个盒子,我想把相机放在那里,看着前面,后来我会去固定相机周围移动地形,这样看起来就像相机在移动但是地形在移动.
所以,这是我的代码:
int main()
{
osgViewer::Viewer viewer;
viewer.setUpViewInWindow(0,0,800,800);
osg::ref_ptr<osg::Group> root (new osg::Group);
osg::Node* terrain = osgDB::readNodeFile(".terrain.obj");
if(terrain == NULL) {
return -1;
}
Geode* gbox = new Geode();
gbox->addDrawable(new ShapeDrawable(new Box()));
PositionAttitudeTransform* terrainT = new PositionAttitudeTransform();
PositionAttitudeTransform* boxT = new PositionAttitudeTransform();
boxT->setScale(Vec3d(50,50,50));
boxT->setPosition(Vec3d(1000,1000,0));
root->addChild(terrainT);
root->addChild(boxT);
terrainT->addChild(terrain);
boxT->addChild(gbox);
viewer.setSceneData( root.get() );
viewer.addEventHandler(new osgViewer::WindowSizeHandler);
viewer.setCameraManipulator(new osgGA::TrackballManipulator());
viewer.realize();
while(!viewer.done()) {
viewer.frame();
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以这段代码工作正常,它正确地加载了fiel,把盒子放在我想要的地方,我可以用鼠标导航.
现在,我真的找不到任何东西将相机放在盒子里.我不能.
任何人都可以给我一些如何做的提示吗?它应该不是很难,但我找不到任何好的教程和文档Viewer和Camera类真的不是很有帮助.
我想在线性程序(或必要时使用 MIP)中编写一个非重叠约束(即 2 个矩形不重叠)。我知道如何在约束编程中做到这一点:
对于对象 i 和 j:
x[i]+dx[i]<=x[j] 或 y[i]+dy[i]<=y[j] 或 x[j]+dx[j]<=x[i] 或 y[ j]+dy[j]<=y[i] 其中 x 和 y 是包含对象坐标的数组,dx 和 dy 是对象的维度。
知道在 LP/MIP 中执行此操作的最佳方法吗?谢谢!
我已经检查了一段时间的内联网,并找到了我的问题的任何答案.我想知道C++是否支持有界多态性和/或F-有界多态性.
例如,在Java程序员中可以做到这一点(boundedn polymorphism):
<T extends Car> void startEngine(T c) {/*body method*/}
Run Code Online (Sandbox Code Playgroud)
这个(F-有界多态性):
<T extends Comparable<T>> void compareWith(T c) {/*body method*/}
Run Code Online (Sandbox Code Playgroud)
在C++中有什么相同的东西吗?
谢谢!
在编写模板类win C++时,我遇到了一个小问题.问题很简单:我不知道是否要delete在paremetrized类型上做一个,因为它可能,或者它不能成为一个指针.
我已经看到了这样:模板类c中的析构函数:如何删除可能是指针或非指针的字段?
我已经实现了第一个解决方案,但这需要我专门化整个类,所以这意味着我必须有两个类:
template<class T>
class Node {
private:
T _content;
public:
Node(const T c);
~Node();
};
Run Code Online (Sandbox Code Playgroud)
和
template<class T>
class Node<T*> {
private:
T _content;
public:
Node(const T c);
~Node();
};
Run Code Online (Sandbox Code Playgroud)
我想只有第二个版本,并且只对析构函数进行如下操作:
template<class T>
class Node<T*> {
private:
T _content;
public:
Node(const T c);
~Node();
};
template <class T>
Node<T>::~Node() {
while(!_adjacent.isEmpty()) {
disconnectFrom(_adjacent.first());
}
}
template <class T>
Node<T*>::~Node() {
while(!_adjacent.isEmpty()) {
disconnectFrom(_adjacent.first());
}
delete _content;
}
Run Code Online (Sandbox Code Playgroud)
但后来我收到以下错误:
Node.hpp:43:17: error: invalid use …Run Code Online (Sandbox Code Playgroud)