小编cdh*_*wie的帖子

初始化List上的ArgumentOutOfRangeException

它在For循环的中间抛出一个ArgumentOutOfRangeException,请注意我删除了for循环的其余部分

for (int i = 0; i < CurrentUser.Course_ID.Count - 1; i++)
{    
    CurrentUser.Course[i].Course_ID = CurrentUser.Course_ID[i];
}
Run Code Online (Sandbox Code Playgroud)

课程代码是

public class Course
{
    public string Name;
    public int Grade;
    public string Course_ID;
    public List<string> Direct_Assoc;
    public List<string> InDirect_Assoc;
    public string Teacher_ID;
    public string STUTeacher_ID;
    public string Type;
    public string Curent_Unit;
    public string Period;
    public string Room_Number;
    public List<Unit> Units = new List<Unit>();
}
Run Code Online (Sandbox Code Playgroud)

和CurrentUser(这是用户的新声明)

public class User
{
    public string Username;
    public string Password;
    public string FirstName;
    public string LastName;
    public …
Run Code Online (Sandbox Code Playgroud)

.net c# exception list outofrangeexception

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

如何用其他字符替换字符串中的特定字符

我正在尝试创建一个程序,将一个字符串作为输入,并用*符号替换所有元音.因此,对于"hello world",star_vowels应返回"h*ll*w*rld".

到目前为止我的代码是:

int star_vowels(char s[]){

    int j;

    j = 0;
    while (s[j] != '0'){
        j++;
        if (s[j] = 'a' || s[j] == 'e' || s[j] == 'i' || s[j] == 'o' || s[j] == 'u'){
            putchar('*');
        } else {
            putchar(j);
        }
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

c

4
推荐指数
1
解决办法
3万
查看次数

如何在C++中实现通用哈希函数

我试图通过模板在C++中实现HashTable.这是签名:

template<class T1, class T2>
class HashTable {

public:
void add(T1 a, T2 b);

void hashFunction(T1 key, T2 value)
{

// how to implement this function using key as a generic 
// we need to know the object type of key

}
};
Run Code Online (Sandbox Code Playgroud)

因此,我无法推进涉及通用密钥的实现.

在Java中,我可以轻松地将键转换为字符串,然后很高兴将键的哈希实现为字符串.但是,在C++中,我所知道的是有一个RTTI概念可以动态地将对象转换为所需的对象.

如果这个方法是正确的,如何实现动态转换?

如果在这种情况下使用模板不是实现泛型的正确方法,那么请建议一些更好的方法.

c++ string algorithm hashtable

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

传递给lua_CFunctions的lua_State指针是否保证指向与调用函数相同的状态?

上下文:我正在研究一组绑定,我的许多函数都引用了"全局"Lua状态.(它在我正在开发的代码中实际上不是全局的,但在特定的运行时实例本地,所以全局,因为所有的回调函数都可以访问共享状态.)

Lua文档似乎没有指定传递给a的指针是否lua_CFunction保证是指向lua_State与调用函数完全相同的对象的指针(直接通过lua_cpcall()或间接通过调用调用C函数的Lua代码).

一个小测试表明指针引用了同一个对象,但我不知道这是否有保证.

#include <stdio.h>
#include <lua5.1/lua.h>
#include <lua5.1/lauxlib.h>

static lua_State *state;

static int test_fn(lua_State *L)
{
    printf("global:%p local:%p\n", state, L);
    return 0;
}

int main(int argc, char const **argv)
{
    state = luaL_newstate();

    luaL_openlibs(state);
    lua_register(state, "test_fn", test_fn);

    luaL_dostring(state, "test_fn()");

    lua_close(state);
}
Run Code Online (Sandbox Code Playgroud)

示例输出:

global:0x87ef008 local:0x87ef008
Run Code Online (Sandbox Code Playgroud)

我知道Lua为函数提供了一个只包含该函数的参数的堆栈,这让我有点不安,也许这可以通过将该函数传递给跟踪独立堆栈的不同状态指针来实现.它也可以实现任何其他不需要不同的方式lua_State- 实际上我希望它确实以这种方式工作 - 但是文档似乎没有明确说出任何一种方式.

这些指针是否保证相等?如果没有,在什么情况下可能会有所不同?

lua lua-5.1

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

多个源文件来声明内部类和友谊

为我的忽视而道歉.我无法弄清楚如何使用不同的源文件声明内部类的主体.我想要实现的是这样的:

source1.h:

class A {
    class B;
}
Run Code Online (Sandbox Code Playgroud)

source2.h:

class B {
//
}
Run Code Online (Sandbox Code Playgroud)

source3.cpp: //Implementation of A

source4.cpp: //Implementation of B

额外:在这些声明中如何隐含A和B之间的友谊?

c++

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

当恐慌钩子恐慌时会发生什么?

如果我传递给的函数会发生什么std::panic::set_hook

我可以想象对此做出多种反应:考虑这个 UB,像 C++ 那样中止程序中止程序,为新的恐慌再次调用恐慌处理程序,简单地中止钩子的执行...... Rust 在这里到底承诺了什么?

语境。我正在编写一个带有 Rust/WASM 后端的 Web 应用程序,我想制作一个恐慌钩子,将任何错误发送到服务器进行调试。这涉及到网络操作,该操作本身可能会失败。因此,我试图弄清楚如何在这种双重失败的情况下确保一些合理的行为。

rust

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

XPathNavigator帮助

这是我正在使用的XML示例(可从任何wiki的Special:Export/SomePage结果中检索):

<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.4/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.4/ http://www.mediawiki.org/xml/export-0.4.xsd" version="0.4" xml:lang="en"> 
  <siteinfo> 
    <sitename>Wikipedia</sitename> 
    <base>http://en.wikipedia.org/wiki/Main_Page</base> 
    <generator>MediaWiki 1.16wmf4</generator> 
    <case>first-letter</case> 
    <namespaces> 
      <namespace key="-2" case="first-letter">Media</namespace> 
      <namespace key="-1" case="first-letter">Special</namespace> 
      <namespace key="0" case="first-letter" /> 
      ...
    </namespaces> 
  </siteinfo> 
</mediawiki> 
Run Code Online (Sandbox Code Playgroud)

我已经尝试了所有我能想到的东西,直接"跳转"到siteinfo节点并迭代结果,除非我从根目录手动浏览每个子节点,否则没有任何作用.我已经尝试了各种各样的.Move*和.Select*方法的百万种变化,看起来我只是把头靠在墙上,但我现在的变体看起来像这样:

StringReader strr = new StringReader(_rawData);
XPathDocument xd = new XPathDocument(XmlReader.Create(strr, Bot.XmlReaderSettings));
XPathNavigator xn = xd.CreateNavigator();
XPathNodeIterator xni = xn.Select("/mediawiki/siteinfo");
foreach (XPathNavigator nav in xni)
    Console.WriteLine(nav.LocalName);
Run Code Online (Sandbox Code Playgroud)

这不会返回任何结果.我究竟做错了什么?

c# xml xpath xpathnavigator

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

Unity registerType中泛型参数的多态分辨率

我正在尝试执行以下操作并失败:

class base {}

class derived1 : base {}

class derived2 : base {}

interface itr<t>
where t : class, base
{}

class c1: itr<derived1>
{}

class c2 : itr<derived2>
{}  
Run Code Online (Sandbox Code Playgroud)

//以下2个注册失败:

_unityContainer.RegisterType<itr<base>, c1>("c1");

_unityContainer.RegisterType<itr<base>, c2>("c2");
Run Code Online (Sandbox Code Playgroud)

我得到的错误是上述注册中的第二个参数不能被类型转换为第一个参数,并且该注册无效.有关如何做到这一点的任何建议?
我需要执行上述操作,而不是使用derived1或derived2类作为通用参数进行注册,因为在解析时我不想知道我正在解析的确切派生类型.我只想多态地使用基类型方法.

c# generics inversion-of-control unity-container

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

将类的现有实例转换为更具体的子类

情况:我公司买了一个大型收缩包装应用程序.它应该是可扩展的,yada,yada.它具有SQL和DLL形式的DB,DAL和BLL.它还有一个MVC项目(可扩展部分),但95%的"模型"部分都在DAL/BLL库中.

问题:我需要扩展位于BLL中的一个"模型".它是一个User对象,有47个属性,0个方法,没有构造函数.我开始的是他们班级的一个简单的deivation,如:

public class ExtendedUser : BLL.DTO.User
{
    public bool IsSeller { get; set; }
    public bool IsAdmin { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果我只是创建一个新的ExtendedUser,这工作正常.然而,它是由另一个调用他们的BLL填充,如:

BLL.DTO.User targetUser = UserClient.GetUserByID(User.Identity.Name, id);
Run Code Online (Sandbox Code Playgroud)

我尝试了直接的强力尝试,这当然会抛出一个Cast Exception:

ExtendedUser targetUser = (ExtendedUser)UserClient.GetUserByID(User.Identity.Name, id);
Run Code Online (Sandbox Code Playgroud)

我在这个非常简单的OO概念上画了一个完整的空白.我不想编写一个接受现有User对象的构造函数,然后将每个属性复制到我的扩展对象中.我知道有一种正确的方法可以做到这一点.有人可以打我的头,告诉我显而易见的事吗?

TIA

c# inheritance

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

视频编解码器的解码输出是什么?

伙计们,

我想知道是否有人可以向我解释视频解码的输出究竟是什么.假设它是MP4容器中的H.264流.

通过在屏幕上显示内容,我猜解码器可以提供两种不同类型的输出:

  1. 点 - 位置的(x,y)坐标和像素的(R,G,B)颜色
  2. 矩形的矩形(x,y,w,h)单位和要显示的(R,G,B)颜色

还有时间戳问题.

您能否请教我或指出解码器生成的内容以及视频客户端如何使用此信息在屏幕上显示内容的正确链接?

我打算下载VideoLAN源并检查它,但一些解释会有所帮助.

预先感谢您的帮助.

问候,彼得

codec video-encoding

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