我有一个关于const指针的基本问题.我不允许使用const指针调用任何非const成员函数.但是,我可以在const指针上执行此操作:
delete p;
Run Code Online (Sandbox Code Playgroud)
这将调用类的析构函数,它实质上是一个非const'方法'.为什么允许这样做?它只是支持这个:
delete this;
Run Code Online (Sandbox Code Playgroud)
还是有其他原因吗?
我有一个字符串序列化实用程序,它接受(几乎)任何类型的变量并将其转换为字符串.因此,例如,根据我的惯例,整数值123将被序列化为"i:3:123"(i =整数; 3 =字符串的长度; 123 =值).
该实用程序处理所有原始类型,以及一些非泛型集合,如ArrayLists和Hashtables.界面是这种形式
public static string StringSerialize(object o) {}
在内部我检测对象是什么类型并相应地序列化它.
现在我想升级我的实用程序来处理泛型集合.有趣的是,我找不到一个合适的函数来检测对象是一个泛型集合,它包含哪些类型 - 我需要哪些信息才能正确序列化.到目前为止,我一直在使用表单的编码
if (o is int) {// do something}
但这似乎不适用于泛型.
您有什么推荐的吗?
编辑:感谢Lucero,我已经接近答案了,但我仍然坚持这个小小的语法难题:
if (t.IsGenericType) {
if (typeof(List<>) == t.GetGenericTypeDefinition()) {
Type lt = t.GetGenericArguments()[0];
List<lt> x = (List<lt>)o;
stringifyList(x);
}
}
Run Code Online (Sandbox Code Playgroud)
此代码无法编译,因为" lt"不允许作为对象的<T>参数List<>.为什么不?什么是正确的语法?
第一种方法:裸金属
require 'java'
require 'rubygems'
require "c:/ruby/jruby-1.2.0/lib/ojdbc14.jar" # should be redundant, but tried it anyway
odriver = Java::JavaClass.for_name("oracle.jdbc.driver.OracleDriver")
puts odriver.java_class
url = "jdbc:oracle:thin:@myhost:1521:mydb"
puts "About to connect..."
con = java.sql.DriverManager.getConnection(url, "myuser", "mypassword");
if con
puts " connection good"
else
puts " connection failed"
end
Run Code Online (Sandbox Code Playgroud)
以上结果是:
sqltest.rb:4: cannot load Java class oracle.jdbc.driver.OracleDriver (NameError)
Run Code Online (Sandbox Code Playgroud)
第二种方法:积极记录
require 'rubygems'
gem 'ActiveRecord-JDBC'
require 'jdbc_adapter'
require 'active_record'
require 'active_record/version'
require "c:/ruby/jruby-1.2.0/lib/ojdbc14.jar" # should be redundant...
ActiveRecord::Base.establish_connection(
:adapter => 'jdbc',
:driver => 'oracle.jdbc.driver.OracleDriver',
:url => 'jdbc:oracle:thin:@myhost:1521:mydb',
:username=>'myuser', …Run Code Online (Sandbox Code Playgroud) 我有2个约会.我想获得storedprocedure中两个日期之间的天数.
我正在尝试通过运行ffmpeg实用程序作为子进程来跟踪代码以确定视频分辨率并获取其输出并解析它:
IO.popen 'ffmpeg -i ' + path_to_file do |ffmpegIO|
# my parse goes here
end
Run Code Online (Sandbox Code Playgroud)
...但是ffmpeg输出仍然连接到stdout并且ffmepgIO.readlines为空.ffmpeg实用程序是否需要一些特殊处理?还是有其他方法来获得ffmpeg输出?我在WinXP和Fedora Linux下测试了这段代码 - 结果是一样的.
我使用下面的代码动态更改文本,但我还需要使用VB.NET将SSRS中整行的颜色从黑色更改为红色.但是,row.Cells.Style.ForeColor = System.Drawing.Color.Red不起作用.有关如何动态更改特定行中文本颜色的任何想法?
Public Shared Function ChangeWord(ByVal s As String) As String
Dim strBuilder As New System.Text.StringBuilder(s)
If s.Contains("Others") Then
strBuilder.Replace("Others", "Others FIG NOT INCL")
Return strBuilder.ToString()
Else : Return s
End If
End Function
Public Shared Function ExcludeOthers(ByVal rowDesc As String, ByVal rowVal As Integer) As Integer
If rowDesc.Contains("Others") Then
rowVal = 0
Return rowVal
Else
Return rowVal
End If
End Function
Run Code Online (Sandbox Code Playgroud) 我有以下表格:
Country: Country_ID, CountryName
Regions: Region_ID, RegionName, Country_ID
Areas: Area_ID, AreaName, RegionID
Run Code Online (Sandbox Code Playgroud)
我没有使用外键而且没有计划这样做,我现在要做的就是能够在tableAdapter of country table中的一个查询中删除国家和所有相关区域,区域......
怎么样?
我在Mac上使用Zend Studio for Eclipise,它似乎继续设置所有文件和'Mac Roman'的编码.当我保存文件时,这会成为问题,因为它们都需要是UTF-8.
我知道如何在逐个文件的基础上将编码更改为UTF-8,但我想知道是否可以将此项目设置为广泛?
我有一个Word文档,其中包含一个名为"更新"的命令按钮.
如何使用VBA删除此按钮?
重复: 确定用作方法参数的变量的名称
有没有办法检索传递给方法的参数的名称,例如
int someParameter = 1;
Method(someParameter);
public void Method(int parameter)
{
// I want the name of 'parameter' which will be 'someParameter'.
}
Run Code Online (Sandbox Code Playgroud) c# ×2
sql ×2
c++ ×1
const ×1
database ×1
eclipse ×1
ffmpeg ×1
generics ×1
jdbc ×1
jruby ×1
ms-word ×1
oracle ×1
parameters ×1
reflection ×1
ruby ×1
sql-server ×1
t-sql ×1
typechecking ×1
vb.net ×1
vba ×1
word-vba ×1
zend-studio ×1