Tag: C#的

在C#中访问一个variables是一个primefaces操作?

我已经提出相信,如果多个线程可以访问一个variables,那么所有对该variables的读取和写入都必须由同步代码保护,例如“locking”语句,因为处理器可能在半途切换到另一个线程一个写。 不过,我正在通过使用Reflector来查看System.Web.Security.Membership,并发现如下代码: public static class Membership { private static bool s_Initialized = false; private static object s_lock = new object(); private static MembershipProvider s_Provider; public static MembershipProvider Provider { get { Initialize(); return s_Provider; } } private static void Initialize() { if (s_Initialized) return; lock(s_lock) { if (s_Initialized) return; // Perform initialization… s_Initialized = true; […]

std :: back_inserter为一个std :: set?

我想这是一个简单的问题。 我需要做这样的事情: std::set<int> s1, s2; s1 = getAnExcitingSet(); std::transform(s1.begin(), s1.end(), std::back_inserter(s2), ExcitingUnaryFunctor()); 当然, std::back_inserter不起作用,因为没有push_back 。 std::inserter也需要一个迭代器? 我没有使用std::inserter所以我不知道该怎么做。 有没有人有一个想法? 当然,我的另一个select是使用s2的vector,然后稍后进行sorting。 也许那样更好?

在没有for或while的构造函数中无限循环

我在这里做了一个testing,但输出是一个没有结束的循环,我不知道为什么。 其实我正在做另一个testing,但是当我写这个时,我不明白这个循环是怎么发生的。 重复输出“ABC”。 #include <map> #include <string> #include <iostream> class test { public: std::map <int, int> _b; test(); test (std::map<int, int> & im); ~test(); }; test::test() { std::cout<<"abc"; _b.clear(); _b[1]=1; test(_b); } test::test(std::map <int, int>& im) { std::cout<<im[1]; } test::~test() {}; int main () { test a; }

如果我有一个在标签后初始化的variables,为什么我会得到“一个标签只能是一个语句的一部分,一个声明不是一个声明”?

我有以下简化代码: #include <stdio.h> int main () { printf("Hello "); goto Cleanup; Cleanup: char *str = "World\n"; printf("%s\n", str); } 我得到一个错误,因为在标签后面声明了一个新的variables。 如果我把标签后面的内容(主要是初始化)放在{}块中,编译成功。 我想我知道在切换的情况下阻止的原因,但为什么它应该适用于标签的情况下? 这个错误来自gcc编译器

如何使用doxygen从C ++源码创buildUML类图

我一直在寻找一些材料来描述如何用doxygen生成简单的类图,但是找不到一个。 任何人都可以帮忙吗? 我需要从一组C ++文件创build如下所示的图表。 如果有更好的工具来实现这一点,请让我知道。

什么可以使C + + RTTI不受欢迎?

查看LLVM文档,他们提到他们使用“RTTI的自定义forms” ,这就是他们具有isa<> , cast<>和dyn_cast<>模板函数的原因。 通常,阅读一个库重新实现一些语言的一些基本function是一个可怕的代码气味,只是邀请运行。 但是,我们正在谈论的是LLVM:这些人正在研究C ++编译器和 C ++运行时。 如果他们不知道自己在做什么,那么我就非常烦了,因为我更喜欢使用Mac OS附带的gcc版本。 尽pipe如此,还是比他们less尝试,我仍然想知道正常RTTI的缺陷是什么。 我知道它只适用于具有V表的types,但是这只会引出两个问题: 既然你只是需要一个虚拟的方法来有一个虚拟表,为什么他们不只是一个方法标记为virtual ? 虚拟析构函数似乎擅长这一点。 如果他们的解决scheme不使用普通的RTTI,那么有什么想法是如何实现的?

什么是一个std :: map扩展初始化列表看起来像?

如果它甚至存在,一个std::map扩展初始化器列表是什么样的? 我已经尝试过一些…的组合,所有我能想到的与GCC 4.4,但没有发现任何编译。

将数组投射到IEnumerable <T>

假设你有一个基本的Employee类: class Employee { public string Name; public int Years; public string Department; } 然后(在一个单独的类)我有下面的代码片段(我想我明白除了最后一个): 我相信下面的代码片段可以工作,因为数组initiliser创build一个Employee对象的数组,这个对象的types和被分配给的劳动力variables是一样的。 Employee[] workforceOne = new Employee[] { new Employee() { Name = "David", Years = 0, Department = "software" }, new Employee() { Name = "Dexter", Years = 3, Department = "software" }, new Employee() { Name = "Paul", Years […]

返回一个char *和一个char 函数的区别是什么?

为什么第一个函数返回string“Hello,World”,但是第二个函数什么也不返回。 我认为这两个函数的返回值是不确定的,因为它们返回超出范围的数据。 #include <stdio.h> // This successfully returns "Hello, World" char* function1() { char* string = "Hello, World!"; return string; } // This returns nothing char* function2() { char string[] = "Hello, World!"; return string; } int main() { char* foo1 = function1(); printf("%s\n", foo1); // Prints "Hello, World" printf("————\n"); char* foo2 = function2(); // […]

boost :: variant和boost :: boost如何工作?

boost库中的variant和any如何在内部工作? 在我正在进行的一个项目中,我目前使用标记联合。 我想用别的东西,因为C ++中的工会不让你使用带有构造函数,析构函数或重载赋值操作符的对象。 我询问任何和变体的大小,并与他们做了一些实验。 在我的平台中,变体将其最长可能types的大小加上8个字节:我认为它只是8字节的types信息,其余的是存储的值。 另一方面,任何只需要8个字节。 因为我在一个64位的平台上,我想任何只是一个指针。 任何人知道它是什么types? Variant如何通过模板实现它的function? 在使用它们之前,我想了解更多关于这些类的知识。