小编Pho*_*iyx的帖子

当push_back新元素到std :: vector时,C++引用会发生变化

我不知道该怎么做 - 请告诉我下面的代码有什么问题.我修改了我的代码,将其简化为最简单的术语.有一个带有一堆MyNode对象的std :: vector.第一步是获取对这些节点之一(Data m_data)的一个数据元素的常量引用 - 在下面的示例中,在插入第二个节点之前只有一个节点,如下所示:

const cv::Data& currData = m_nodesVector[currIndex].GetData();
MyNode node(...);
m_nodesVector.push_back(node);
Run Code Online (Sandbox Code Playgroud)

正好在vector :: push_back调用中,currData的值发生了变化!我只是不明白.如何将新节点插入向量会将值引用更改为第一个节点的数据?!! 请注意,在"创建"第二个节点时,该值不会更改 - 但是在插入到std :: vector中的操作时.我的意思是,我认为std :: vector可能会重新调整一些内存,但这不应该改变引用权吗?

编译器= VS 2012

多谢你们.非常感激.

c++ reference push-back stdvector c++11

6
推荐指数
1
解决办法
3766
查看次数

JqueryUI可选 - 不使用Ctrl而取消选择

我正在尝试使用父/子/孙子缩进创建一个可选列表.请看下面:

http://jsfiddle.net/Lmsop4k7/

$('#theParentList').selectable({
    filter: 'li div',
    selected: function (event, ui) {
        var selectedText = $(ui.selected).text();
        $("#selectedNode").text(selectedText);

        if ($(ui.selected).hasClass('selectedfilter')) {
            $(ui.selected).removeClass('selectedfilter');
        }               
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,我在提出"取消选择"功能时遇到了很多问题(即没有按下Ctrl键).我也不想自动"绑定"Ctrl到鼠标按下(这在其他一些解决方案中有描述),b/c我只希望一次选择一个项目.另外,我只想了解如何通过事件取消选择控制流(例如"选择:").

我在这做错了什么?如您所见,由于文本框使用正确的文本正确更新,因此可以正确选取选择.但是,当我单击已单击的项目以"取消选择"(不按住Ctrl键)时,它不会取消选中.我想即使在这种情况下,一个"选定的"事件也会被触发 - 但显然我的"selected:"代码有问题.非常令人沮丧..

感谢大家.

javascript css jquery jquery-ui

5
推荐指数
1
解决办法
811
查看次数

C++容器可以包含模板对象吗?得到错误

我收到以下错误:"unspecialized类模板不能用作模板参数'_Kty'的模板参数,期望一个真正的类型"

我试图编译的代码是这样的:

template <typename T> class TypeX;

template <typename T>
class TypeY
{

...
    private:
    std::set<TypeX> m_tree;
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,包括"TypeX.h"(这是一个模板类)而不是前向声明不会改变任何东西.

我从这个错误收集的是因为TypeX是"非专业化的" - 在某种意义上"T"没有被定义而且TypeX仍然是模板形式,它不能是std :: set的基础.但我真的希望TypeX成为T的模板,这样在TypeY中,我可以初始化一个新的TypeX(T模板),然后将该新对象插入m_tree.

可以这样做吗?多谢你们.

c++ templates

1
推荐指数
1
解决办法
93
查看次数

画布中的HTML/Javascript绘制弧不起作用 - 矩形/线条很好

在使用HTML5/Javascript画布代码片段时遇到一些问题.请参阅下面的相关部分.两个正方形和线条显示没有问题 - 但圆/弧没有..为什么这个?!我的"弧"代码出了什么问题?...谢谢.

HTML文件:

<section id="main">
<canvas id="canvas" width="600" height="400">
    Requires modern browser.
</canvas>
Run Code Online (Sandbox Code Playgroud)

<!-- START JAVASCRIPT -->

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">   </script>
<script src="js/canvas.js"></script>
<script>
    $(document).ready(function() {
        CV.initialize();
    });
</script>
Run Code Online (Sandbox Code Playgroud)

Javascript文件:

CV.initialize = function()
{
console.log('start');
cv = $('#canvas')[0];
canvas = cv.getContext('2d');

canvas.beginPath();
canvas.arc(200, 200, 150, Math.Pi, 0, false);
canvas.closePath();
canvas.stroke();

canvas.strokeStyle = "blue";
canvas.strokeRect(10, 10, 50, 50);
canvas.fillRect(100, 100, 150, 150);

canvas.beginPath();
canvas.moveTo(300,300);
canvas.lineTo(400,350);
canvas.closePath();
canvas.stroke();
};
Run Code Online (Sandbox Code Playgroud)

javascript html5

0
推荐指数
1
解决办法
828
查看次数

标签 统计

c++ ×2

javascript ×2

c++11 ×1

css ×1

html5 ×1

jquery ×1

jquery-ui ×1

push-back ×1

reference ×1

stdvector ×1

templates ×1