假设我有两个类,我希望它们在一个给定的头文件中是可见的,一个类是它们的祖先,我希望它只对前面提到的两个类可见.如何在C++中实现隐藏的类功能?
我正在寻找一个可以提供差距的集合.目标是:
null不起作用.subList 方法是期望根据索引间隔访问子列表示例用例:
List<Integer> list = /* ? */;
list.add(0,5);
list.add(1,4);
list.add(5,3);
for( Integer i : list )
{
System.out.print( i + " " );
}
/* desired output : "5 4 3 "*/
Run Code Online (Sandbox Code Playgroud) 我在nasm中寻找一些预处理器功能,允许为x86和x64架构提供一个源代码.
我的意思是ifdef some_constant.像C预处理器一样使用,如果它想检测它是否在Windows或Linux上编译.
我知道nasm标志.我用它们.我只想拥有完全相同的源代码,并希望预处理器能够根据这些标志正确处理它.我使用ifdef ... else进行堆栈操作,因此,两个架构的核心代码都相同.
我在c中做了一个简单的代码:
#include <stdio.h>
int main( int argc, char* argv[] ) {
printf( "Hello, just wanted to say: %s.\n", argv[1] );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并从中制作了两个程序 - app1和app2.
现在,我正在试验管道:
./app1 Bye | ./app2
Run Code Online (Sandbox Code Playgroud)
并输出投入%s的(null),而不是预期的"你好".为什么?
我知道孩子不能降低非静态方法的可视性,而且我理解为什么会这样。
但是,我读过“可以通过重新声明静态方法来隐藏它”。但是我不明白如何用Java实现。
这真的有可能吗?如果是,该如何做(代码示例),为什么要引入它(这似乎与不降低接口可见性的原理相矛盾)?
Groovy 中的地图是否保持提供数据的顺序?即,当迭代键时,顺序会始终保留吗?
farms = [Idaho: ["Duck", "Dog"], Ohio: ["Chicken", "Duck"], "New Mexico": ["Dog", "Cow"]]
我的类Matrix有两个构造函数,包括复制一个,执行深度复制.这种解决方案非常适用于复制另一个对象的明显情况.虽然在以下情况中:
Matrix m = m1 * m2; // for earlier constructed m1 & m2
Run Code Online (Sandbox Code Playgroud)
在我看来效率低下,因为我在乘法运算中创建了一个对象,只是为了复制它而不是直接赋值给m.矩阵可以占据很大的内存.如何更好地处理它,专业人士的常见做法是什么?
矩阵作为二维列表动态实现,如稀疏矩阵的情况.
PS我明白乘法的结果是局部的.然而,我仍然认为,如果没有上述过度计算,它可以以某种方式处理得更好.
可能重复:
__gxx_personality_v0是什么?
我已经在编译C++代码的上下文中看到了这个问题.但是我要编译纯 C代码并继续收到此错误.我被禁止使用"-lstdc ++"作为解决此gcc问题的方法.如何更改我的代码以使其正常工作以及为什么会出现此错误?
我的简化代码:
//this is main.cpp
#include <stdio.h>
int main()
{
char ch[3];
ch[0] = getc(stdin);
ch[1] = getc(stdin);
ch[2] = '\0';
printf("%s\n", ch);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的编译命令是:
gcc main.cpp
Run Code Online (Sandbox Code Playgroud) 我正在阅读Thinking in Java,作者强调主要方法不应该调用swing方法.作为这种做法的一个例子,他提出了以下一段代码(可在他的网页上找到):
//: gui/SubmitSwingProgram.java
import javax.swing.*;
import java.util.concurrent.*;
public class SubmitSwingProgram extends JFrame {
JLabel label;
public SubmitSwingProgram() {
super("Hello Swing");
label = new JLabel("A Label");
add(label);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 100);
setVisible(true);
}
static SubmitSwingProgram ssp;
public static void main(String[] args) throws Exception {
SwingUtilities.invokeLater(new Runnable() {
public void run() { ssp = new SubmitSwingProgram(); }
});
TimeUnit.SECONDS.sleep(1);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
ssp.label.setText("Hey! This is Different!");
}
});
}
} ///:~
Run Code Online (Sandbox Code Playgroud)
然后通过invokeLater方法创建并初始化gui对象,使其成为线程安全的.但是几页之后,作者提出了以下代码:
//: gui/Button2.java
// Responding to …Run Code Online (Sandbox Code Playgroud) java swing multithreading thread-safety event-dispatch-thread
我使用以下代码获取"本地变量字符串可能尚未初始化"错误.代码本身没有意义,它只是为了锻炼而编写的.
public class StringExercise
{
public static void main(String[] args)
{
String string; // initializing here fixes the issue
for (int i = 0; i < 10; ++i)
{
if( (i % 4) == 2 )
{
string = "Number: " + i;
}
}
System.out.println(string); // this is marked as wrong by Eclipse
}
}
Run Code Online (Sandbox Code Playgroud)
为了使其正常工作,初始化String就足够了,如上面的注释中所表达的那样.
我的问题是为什么需要它?该方法println永远不会被赋予null,并且在循环中的条件第一次返回true时将发生初始化.我做错了什么或只是Java对程序员的错误过于谨慎?如果是后者,从理论的角度来看,它是如何合理的呢?
我需要将鼠标指针选择的点的坐标传递给 R 程序,以执行一些计算。我在让它工作时遇到问题。
我知道这段代码应该识别图上的点:
plot(kk2$k2,kk2$k1)
identify(kk2$k2,kk2$k1)
Run Code Online (Sandbox Code Playgroud)
但即使这样也行不通。在绘图上出现一些无意义的数字,而点有两个坐标。为什么?
如何至少解决这个问题?
我的目标是将点坐标返回给 R 并对它们执行一些计算。数据集 kk2 只有两列 - k1 和 k2,仅此而已。
java ×4
c ×2
c++ ×2
r ×2
arguments ×1
assembly ×1
bash ×1
collections ×1
gcc ×1
groovy ×1
inheritance ×1
nasm ×1
nls ×1
oop ×1
preprocessor ×1
string ×1
swing ×1
visibility ×1
x86 ×1
x86-64 ×1