小编Q-b*_*uit的帖子

指针和结构

我试图围绕指针,参考和地址,但每次我认为我得到了一些意想不到的东西弹出.

为什么我们不需要取消引用结构来设置此示例中的值?

// pointer_tet.cpp
 #include <iostream>
struct example
{
    char name[20];
    int number;
};
int main()
{
   using namespace std;
   example anExample = {"Test", 5};
   example * pt = &anExample;
   pt->number = 6;
   cout << pt->number << endl;

   int anotherExample = 5;
   int * pd = &anotherExample;
   *pd = 6;
   cout << *pd << endl;

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑:谢谢你的回答!令我困惑的是无法设置*pt.number = 6.

c++

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

使用我的自定义迭代器和stl算法

我正在尝试创建自己的迭代器,并且我已经使用std :: generate算法按预期工作了.但是,当我尝试std :: find的std :: max_element时,我得到一些神秘的错误.

这是我的迭代器的接口:

template <typename GridT, 
          typename GridPtr,
          typename GridRef,
          template <typename> class ShapeT>
class GridIterator
{
public:
    typedef GridIterator<GridT, GridPtr, GridRef, ShapeT> Iterator;

    // Iterator traits - typedefs and types required to be STL compliant
    typedef std::ptrdiff_t           difference_type;
    typedef typename GridT::Element  value_type;
    typedef typename GridT::Element* pointer;
    typedef typename GridT::Element& reference;
    typedef size_t                   size_type;
    std::forward_iterator_tag        iterator_category;


    GridIterator(GridT& grid,
                 ShapeT<typename GridT::Resolution> shape,
                 Index iterStartIndex);

    ~GridIterator();

    Iterator& operator++();
    Iterator  operator++(int);

    typename GridT::Element& operator*();
    typename GridT::Element* operator->();

    bool …
Run Code Online (Sandbox Code Playgroud)

c++ iterator stl stl-algorithm

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

使用外部检查旧版本

我是SVN Tortoise的新手,在理解修订版本和外部外观的组合时遇到了一些麻烦。

我正在研究的S​​VN项目具有多个外部组件。其中一些是标签,一些指向其他SVN库项目的主干。

当我尝试回滚并查看该项目的较旧版本时,看来我签出的内容与几周前的情况不完全相同。指向库项目主干的外部对象不会回滚,但包含最新的更改。

是否所有外部对象都应指向其他项目的标签,否则,是否意味着您无法轻松获得先前修订的快照?

svn tortoisesvn

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

读取恰好具有良好价值的未初始​​化变量

我在Blackfin 533处理器上运行的一些代码中遇到了这个bug.

第一次Func()运行时,fooStruct将包含垃圾,但在下一次迭代中,getFoo()偶然返回的旧值仍然存在fooStruct.foo.

FooStruct
{
    double foo;
    double bar;
};

void Func()
{
    FooStruct fooStruct;

    double bar = 123.4 / fooStruct.foo;

    fooStruct.foo = getFoo();
    fooStruct.bar = bar;
}
Run Code Online (Sandbox Code Playgroud)

这意味着第一次运行时,我们正在读取未初始化的变量,这是未定义的行为.以下迭代怎么样?这仍然是未定义的行为吗?在嵌入式处理器上读取未初始化的变量时,我们可以期待看到什么样的行为?

c++ embedded language-lawyer blackfin

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

反序列化抛出异常

我正在尝试将List作为BLOB存储在sqlite数据库中,但是我在重建List时遇到了一些麻烦.我承认我不太了解BinaryFormatter或MemoryStream的工作原理.

插入一行似乎工作正常:

public void InsertRow()
{
    List<float> myList = new List<float>();
    myList.Add(12);
    myList.Add(13);
    myList.Add(14);
    myList.Add(15);
    myList.Add(16);

    var binFormatter = new BinaryFormatter();
    var mStream = new MemoryStream();
    binFormatter.Serialize(mStream, myList);

    SQLiteCommand command = new SQLiteCommand(m_dbConnection);

    byte[] data = mStream.ToArray();

    command.CommandText = "insert into photos (photo) values (@photo)";
    command.Parameters.Add("@photo", DbType.Binary, 237).Value = data;
    command.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

Deserialize方法抛出System.Runtime.Serialization.SerializationException:在解析完成之前遇到的End of Stream:

public void GetRow()
{
    string sql = "select photo from photos where id = 1";
    SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);

    using (var reader = …
Run Code Online (Sandbox Code Playgroud)

.net c#

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