假设我有一个对象.我将它分配给一个整数.
MyClass obj1 = 100;//Not valid
Run Code Online (Sandbox Code Playgroud)
比方说,我有一个接受整数的参数化构造函数.
MyClass(int Num)
{
// .. do whatever..
}
MyClass obj1 = 100;//Now, its valid
Run Code Online (Sandbox Code Playgroud)
同样在任何情况下,相反的情况是否有效?!
eg) int Number = obj1;//Is it VALID or can be made valid by some tweeks
Run Code Online (Sandbox Code Playgroud)
编辑:
我发现这可以使用转换函数. 转换函数通常称为"强制转换运算符",因为它们(以及构造函数)是使用强制转换时调用的函数.
转换函数使用以下语法:
operator convert-type-name()
例如,许多人在下面整整地解释了它
我在将从文件读取的char数组转换为int数组时遇到问题。也许有人可以帮助我。这是我的代码:
char vectorPatron[67];
int iPatrones[67];
archivo = fopen("1_0.txt", "r");
for(i=0;i<67;i++){
fscanf(archivo, "%c", &vectorPatron[i]);
printf("%c",vectorPatron[i]);
}
fclose(archivo);
for(i=0;i<67;i++){
iPatrones[i] = atoi(&vectorPatron[i]);
printf("%d",iPatrones[i]);
}
Run Code Online (Sandbox Code Playgroud) 我想知道标准的Scala解析器组合器是否包含一个解析器,它接受Scala语言本身也接受的相同标识符(如Scala语言规范1.1节中所述).
该StdTokenParsers特征有一个ident解析器,但它拒绝像这样的标识符empty_?.
(如果确实没有这样的解析器,我也可以实例化Scala解析器本身,但那不再是轻量级了.)
我有一个奇怪的问题UIButtons,请输入custom.我将4个按钮放在a上UIScrollview,使用随机角度旋转每个按钮CGAffineTransform.现在看来按钮本身会根据旋转角度改变尺寸.
UIGraphicsBeginImageContext(tempCtxSize);
[cookbookImage drawInRect:CGRectMake(imgOffsetX, imgOffsetY+frmOffsetY, cookbookImage.size.width, cookbookImage.size.height)];
[cookbookFrame drawInRect:CGRectMake(0.0f, frmOffsetY, cookbookFrame.size.width, cookbookFrame.size.height)];
UIImage *combinedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
…
UIButton *cookbookViewButton = [UIButton buttonWithType:UIButtonTypeCustom];
[cookbookViewButton setFrame:CGRectMake(0.0f, 0.0f, combinedImage.size.width, combinedImage.size.height)];
[cookbookViewButton setBackgroundColor:[UIColor clearColor]];
[cookbookViewButton setBackgroundImage:combinedImage forState:UIControlStateNormal];
CGAffineTransform rotation = [cookbookViewButton transform];
rotation = CGAffineTransformRotate(rotation, angle); // some random angle
[cookbookViewButton setTransform:rotation];
Run Code Online (Sandbox Code Playgroud) 我正在读一本关于SIOF的书,它举了一个例子:
//file1.cpp
extern int y;
int x=y+1;
//file2.cpp
extern int x;
int y=x+1;
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:
在上面的代码中,会发生以下事情吗?
如何在unix中创建一个新的环境变量并在程序中使用它??????
我发现了类似的主题:
C++(stl)与Java中的迭代器,是否存在概念上的差异?
这基本上处理Java迭代器(类似于C#)无法后退.
所以在这里我想关注限制 - 在C++迭代器中不知道它的限制,你自己将给定的迭代器与限制进行比较.在C#中,迭代器知道更多 - 如果迭代器有效,你可以在不与任何外部引用比较的情况下判断.
我更喜欢C++方式,因为一旦有了迭代器,你可以将任何迭代器设置为限制.换句话说,如果您只想获得少量元素而不是整个集合,则不必更改迭代器(在C++中).对我来说它更"纯粹"(清晰).
但是当然MS在设计C#时知道这个和C++.那么C#方式的优点是什么?哪种方法更强大(这导致基于迭代器的更优雅的功能).我错过了什么?
如果您对C#与C++迭代器设计的想法不同于它们的限制(边界),请同时回答.
注意 :(以防万一)请保持严格的技术讨论.没有C++/C#flamewar.
正如Tzaman所说:"限制单独表达没有任何好处,因为除了一次走一个元素之外没有办法到达那里." 但是,构建一个一次执行几个步骤的C#迭代器并不困难,因此问题是 - 是否有一个显式限制迭代器的好处(如在C++中)?如果是 - 什么?
Edit1:假设你有一个函数foo,它在迭代器上做了一些事情(这个例子很天真!)
void foo(iter_from,iter_end) // C++ style
void foo(iter) // C# style
Run Code Online (Sandbox Code Playgroud)
现在你想在除了最后10个之外的所有元素上调用功能栏.
bar(iter_from,iter_end-10); // C++ style
Run Code Online (Sandbox Code Playgroud)
在C#中(如果我没有记错的话)你必须为这个迭代器提供额外的方法来改变它的限制,如下所示:
bar(iter.ChangeTheLimit(-10));
Run Code Online (Sandbox Code Playgroud)
编辑2:重读你的帖子后,我感觉到了至关重要的区别.在C++中,您处理集合的迭代器,在C#中您处理集合(迭代器在内部使用).如果是的话,我仍然对C#感到有点不舒服 - 你迭代了这个集合,当你找到有趣的元素时,你想要将所有元素从"here"传递到结尾.在C++中,它非常简单,没有开销.在C#中,您要么传递一个迭代器,要么传递一个集合(如果后者会有额外的计算).我等你的评论:-)
我不是在比较苹果和橘子.比较.理论在这里是共同点,所以你有排序算法,分区等.你有收集的概念(或序列,如乔恩喜欢).现在 - 问题是你如何设计对元素的访问,以便用C#或C++(或任何其他语言)编写优雅的算法.我想理解"我们这样做的原因,因为......".
我知道.NET迭代器和集合是单独的类.我知道访问元素和整个集合之间的区别.但是在C++中,处理集合的最常用方法是使用迭代器 - 这样您就可以使用列表和向量,尽管这些集合完全不同.另一方面,在C#中你更愿意写
sort(IEnumerable<T> coll)
Run Code Online (Sandbox Code Playgroud)
功能而不是
sort(IEnumerator<T> iter)
Run Code Online (Sandbox Code Playgroud)
正确?所以在这个意义上我猜你不能把C#迭代器作为C++迭代器,因为C#不像C++那样表达相同的算法.或者正如Jon指出的那样 - 在C#中你更倾向于转换集合(Skip,Take)而不是改变迭代器.
我阅读了大量页面并尝试了很多解决方案,但都没有奏效!
我的问题是:
test.asifa.net/asifa-wp
重定向至:
test.asifa.net/asifa-wp/
重定向到第一页。
有点奇怪的是 asifa-wp 产生:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://test.asifa.net/asifa-wp/">here</a>.</p>
</body></html>
Run Code Online (Sandbox Code Playgroud)
而 asifa-wp/ 会生成一个空页面,但会生成以下标题(curl -v 输出):
* About to connect() to test.asifa.net port 80 (#0)
* Trying 69.163.203.138... connected
* Connected to test.asifa.net (69.163.203.138) port 80 (#0)
> GET /asifa-wp/ HTTP/1.1
> User-Agent: curl/7.18.2 (i386-redhat-linux-gnu) libcurl/7.18.2 NSS/3.12.0.3 zlib/1.2.3 libidn/0.6.14 libssh2/0.18
> Host: test.asifa.net
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently …Run Code Online (Sandbox Code Playgroud) 我struct喜欢这个
typedef struct _somestruct {
int a;
int b;
}SOMESTRUCT,*LPSOMESTRUCT;
Run Code Online (Sandbox Code Playgroud)
我正在创建一个对象struct并试图像这样打印它的地址
int main()
{
LPSOMESTRUCT val = (LPSOMESTRUCT)malloc(sizeof(SOMESTRUCT));
printf("0%x\n", val);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
..我得到了这个警告
警告C4313:'printf':格式字符串中的'%x'与'LPSOMESTRUCT'类型的参数1冲突
所以,我试着将地址转换int成这样的
printf("0%x\n", static_cast<int>(val));
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
错误C2440:'static_cast':无法从'LPSOMESTRUCT'转换为'int'
我在这里错过了什么?如何避免这种警告?
谢谢.
IEnumerable<ReportReceipt> expected = new List<ReportReceipt>()
{
new ReportReceipt("fileName1","Hash1","some comments1")
};
IEnumerable<ReportReceipt> actual = new List<ReportReceipt>()
{
new ReportReceipt("fileName1","Hash1","some comments1")
};
Assert.IsTrue(expected.SequenceEqual(actual));
Run Code Online (Sandbox Code Playgroud)
我正在使用VS 2008运行MSTest.