我正在与C2751编译器错误搏斗,并不太明白究竟是什么导致它.以下小代码产生错误:
#include <iostream>
class A {
public:
A () { std::cout << "A constructed" << std::endl; };
static A giveA () { return A (); }
};
class B {
public:
B (const A& a) { std::cout << "B constructed" << std::endl; }
};
int main () {
B b1 = B (A::giveA ()); // works
B b2 (B (A::giveA ())); // C2751
B b3 (A::giveA ()); // works
}
Run Code Online (Sandbox Code Playgroud)
编译器输出:
consoleapplication1.cpp(21): error C2751: 'A::giveA': the name of …
以下方法的成本是多少?您如何计算?
public String joinWords(String[] words) {
String sentence = "";
for (String w : words) {
sentence = sentence + word;
}
return sentence;
}
Run Code Online (Sandbox Code Playgroud) 我有以下代码
class dog{
String name;
int barksLeft;
int bark(int howManyTimes){
while(howManyTimes >3){
System.out.println("woff!");
howManyTimes-=1;
return howManyTimes;
}
}
}
public class implementDog{
public static void main (String[] args) {
dog pupy = new dog();
pupy.barksLeft = pupy.bark(6);
System.out.println("You have "+pupy.barksLeft+" barks left");
}
}
Run Code Online (Sandbox Code Playgroud)
当我编译它时,我收到此错误
implementDog.java:10: error: missing return statement
}
^
1 error
Run Code Online (Sandbox Code Playgroud)
这是我检查的内容:
我错过了什么?
我正在上一门C ++课程,并且被困在类和对象上。简而言之,我正在做一个分配,创建一个带有两个变量的类(假设长度和宽度)。
我已经弄清楚了如何使用get和set函数来做到这一点。但是,然后,我们必须对这些变量使用数学运算。我们应该编写一个函数,该函数将类的一个实例作为参数(因此有两个变量),然后对该对象(作为参数的一个)和调用方法的对象进行数学运算。
我感到困惑的部分原因是语言,我不确定这到底意味着什么。到目前为止,就像我说的那样,我设法能够通过用户输入设置setLength和setWidth变量。我真的非常想尝试将这些值(或该对象?)传递给函数,然后调用另一个对象的方法?
也许有人可以帮助我弄清楚“将一个对象作为参数然后对我称之为方法的对象进行数学运算”是什么意思?或者只是帮助传递物体?
我有以下代码来读取文件的行:
String fileName = "dataset/ANC-all-count.txt";
Integer i=0;
//read file into stream, try-with-resources
try (Stream<String> stream = Files.lines(Paths.get(fileName), StandardCharsets.ISO_8859_1)) {
stream.forEach(System.out::println);
i++;
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("count is : "+i);
Run Code Online (Sandbox Code Playgroud)
但问题是我需要放入i++
以下行:
stream.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
所以我想要这样的东西:
stream.forEach(System.out::println; i++);
Run Code Online (Sandbox Code Playgroud)
但它不能以这种方式工作,所以任何人都可以帮助我如何使它工作?
假设我有这个界面:
public interface i{
void setImage(Image image);
}
Run Code Online (Sandbox Code Playgroud)
我希望实现该接口方法的类方法不仅可以接受作为方法参数的图像,还可以接受扩展Image的所有类.
我在界面中需要的是:
<T extends Image> void setImage(T image);
Run Code Online (Sandbox Code Playgroud)
但是,当然,这不是正确的方法.我应该如何在接口中编写通用方法?
什么是写的正式方法:Xcode
,XCode
,xcode
,...?我已经看到它写了很多方法,并希望确保我正确使用它.
这是一个与这个问题相关的元问题:如何编写无分支std :: vector扫描?.
最初提出的问题(强调我的):
我有一个
std::vector<int> data
; 我想找到小于9的所有数组索引并将它们添加到结果向量中.
然后我把它编辑成:
我有一个
std::vector<int> data
,我想找到所有小于9的元素并将它们添加到结果向量中.
然后另一位用户将其编辑为:
我有一个
std::vector<int> data
,我想找到元素小于9的所有数组索引,并将它们添加到结果向量.
我将其标记为主持人还原,说明:
我重写了这个问题(stackoverflow.com/posts/38798841/revisions),其主要目标是将"数组索引"替换为"元素",因为这实际上是被问到的 - 并且在此上下文中引用"索引/索引"会导致有些困惑.然而,用户Aconcagua推翻了我编辑的这个关键部分.我相信他的最新编辑应该回滚.
它有理由拒绝:
阿空加瓜的编辑是正确的; 用户正在收集数组指标,而不是数组元素本身
.
现在,我不太明白主持人说的是什么 - "用户正在收集阵列标记".我看到它的方式,索引是数组中元素的位置.例如,在C语言中:
char array[] = {'t', 'e', 's', 't'};
int index = 1;
char element = array[index];
printf('%c', element);
Run Code Online (Sandbox Code Playgroud)
我根本不知道他将如何或为什么收集"指数"而不是"元素".有人可以澄清一下这样我真的能理解吗?
我看到很多人发帖说他们得到了这样的错误,但似乎不知道如何找出错误的来源.
因此,我想知道人们是否知道如何访问和使用堆栈跟踪.
那么你如何访问它,它对你意味着什么?