我已经编写了这段代码,但是当我尝试初始化一个Critter对象数组并且不知道它们是关于什么时出现了一些错误。
我的代码:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Critter {
private:
string crName;
public:
Critter(string = "Poochie");
string getName() const { return crName; }
};
Critter::Critter(string n) {
crName = n;
}
int main() {
Critter c[10] = { "bob","neo","judy","patrik","popo" }; //here
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Critter {
private:
string crName;
public:
Critter(string = "Poochie");
string getName() const { return crName; }
};
Critter::Critter(string …Run Code Online (Sandbox Code Playgroud) c++ arrays runtime-error visual-studio object-initialization
我在python初始化程序中有一些背景知识(本质上是Python对象构造函数语法),在Python中实例化对象的语法如下:
class Account:
def __init__(self,name=None,address="Not Supplied",balance=0.0):
this.name = name
this.address=address
this.balance=balance
Run Code Online (Sandbox Code Playgroud)
为什么,在C#中,我必须提供默认的构造函数方法的机构,在蟒蛇的时候,我可以声明为可选的,默认值是在通过(见__init__的签名):
public class Account
{
private string name;
private string address;
private decimal balance;
public Account (string inName, string inAddress, decimal inBalance)
{
name = inName;
address = inAddress;
balance = inBalance;
}
public Account (string inName, string inAddress)
{
name = inName;
address = inAddress;
balance = 0;
}
public Account (string inName)
{
name = inName;
address = "Not Supplied";
balance = 0;
}
} …Run Code Online (Sandbox Code Playgroud) c# python constructor default-constructor object-initialization
这里有一个有两个私有字段x和y的类;
class Point
{
private:
int x, y;
public:
Point(int = 1,int = 1);
void move(int, int);
void print()
{
cout << "X = " << x << ", Y = " << y << endl;
}
};
Run Code Online (Sandbox Code Playgroud)
初始化Point对象数组时,输出正常;
Point array1[] = { (10), (20), { 30, 40 } };
Run Code Online (Sandbox Code Playgroud)
输出;
First array
X = 10, Y = 1
X = 20, Y = 1
X = 30, Y = 40
Run Code Online (Sandbox Code Playgroud)
但是,如果我们按如下所示初始化Point数组,则输出很奇怪;
Point array2[] = { (10), (20), (30, 40) …Run Code Online (Sandbox Code Playgroud) c++ arrays initialization array-initialization object-initialization
假设我们有一个这样的结构:
type Data struct {
a int
}
Run Code Online (Sandbox Code Playgroud)
我们想要获取返回多个值的函数的单个返回值并将其分配给 Data 对象,例如
data := Data {
a: strconv.Atoi("1000")
}
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用,因为 Atoi 返回两个值,一个数字和一个错误,所以我们需要以某种方式处理额外的值(错误),但就我而言,我不需要评估错误值,并且不可能使用_关键字将其关闭。
在初始化结构时如何实现这一点,我想摆脱错误返回值
请先看一下这个片段:
public MultiThreadManager( Class<T> c) {
T[] allJobs = (T[]) Array.newInstance( c , MAX_THREAD_SIZE ) ;
for ( int i = 0 ; i < MAX_THREAD_SIZE ; i ++ ) {
allJobs[i] = (T) new Object();
service.submit( allJobs[i] );
getWaitingThreads().add( allJobs[i] );
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个例外:
Exception in thread "main" java.lang.ClassCastException: java.lang.Object cannot be cast to slave.JobTemplate
Run Code Online (Sandbox Code Playgroud)
我想做什么:
MultiThreadManager的构造函数应该采用实现Callable的泛型类型(比如Job.java).创建所有这些通用数据类型(Job,java)的数组.初始化它,以便通用数据类型(Job.java)的构造函数将在执行程序服务中运行并执行它们.
请帮我识别我的错误或建议更好的方法.
先感谢您
谢谢大家,但事情稍微复杂一点:Herez其他信息:
public class Job extends JobTemplate<String> {...details ...}
public abstract class JobTemplate< T > implements Callable<T> {...details..}
Run Code Online (Sandbox Code Playgroud)
最后
MultiThreadManager< Job …Run Code Online (Sandbox Code Playgroud)