见标题.我有一个模板.我想强制模板的特定实例进行实例化.我该怎么做呢?
更具体地说,您可以强制抽象模板类进行实例化吗?
我可能会详细说明,因为我有同样的问题.在我的情况下,我正在构建一个库,一些模板实现很大,包含很多东西,但只生成几种类型.我想在库中编译它们并导出所有方法,但不包括带代码的头文件.
即:
template<class T>
OS_EXPORT_DECL class MyTmpl
{
T *item1;
public:
inline T *simpleGetT() { return(item1); } /* small inline code in here */ }
T *doSomeReallyBigMergeStuff(T *b); // note only declaration here
};
// *** implementation source file only seen inside library
template<class T>
MyTmpl<T>::doSomeReallyBigMergeStuff(T *b)
{
... a really big method, but don't want to duplicate it,
so it is a template ...
}
Run Code Online (Sandbox Code Playgroud)
我当然可以引用库中的所有方法来强制它们进行编译和导出,但是不希望向库添加不需要的代码,比如项的参数格式和调用它们的代码等.
????? 具体来说,我正在为多个版本的MSC和GCC以及英特尔编译器构建库.
在Javascript中它将是:
var newObject = { 'propertyName' : 'propertyValue' };
Run Code Online (Sandbox Code Playgroud)
怎么用Python做?
是否可以在不实例化的情况下在c ++中声明变量?我想做这样的事情:
Animal a;
if( happyDay() )
a( "puppies" ); //constructor call
else
a( "toads" );
Run Code Online (Sandbox Code Playgroud)
基本上,我只是想声明条件的外部,以便它获得正确的范围.
有没有办法在不使用指针和a在堆上分配的情况下执行此操作?也许引用聪明的东西?
是否可以使用变量动态实例化一个类?例如在PHP中可能是这样的吗?
class foo
{
public $something;
}
$class_name = "foo";
$f = new $class_name();
Run Code Online (Sandbox Code Playgroud) 我有一个类和一个接口,当我尝试实例化接口时,我收到一个错误:
无法创建抽象类或接口的实例
我的代码如下:
namespace MyNamespace
{
public interface IUser
{
int Property1 { get; set; }
string Property2 { get; set; }
string Property3 { get; set; }
void GetUser();
}
public class User : IUser
{
public int Property1 { get; set; }
public string Property2 { get; set; }
public string Property3 { get; set; }
public void GetUser()
{
//some logic here......
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试实例化时,IUser user = new IUser();我收到一个错误:
无法创建抽象类或接口的实例
我在这做错了什么?
在SO上阅读问题,评论和答案,我一直听说MSVC没有正确地实现两阶段模板查找/实例化.
据我所知,到目前为止,MSVC++只对模板类和函数进行了基本的语法检查,并没有检查模板中使用的名称是否至少被声明了或者沿着这些行.
它是否正确?我错过了什么?
我在这里有一定的困难,我无法成功地调用它属于一种方法ProjectPage 模型的ProjectPage 控制器.
我在我的ProjectPage控制器中:
def index
@searches = Project.published.financed
@project_pages = form_search(params)
end
Run Code Online (Sandbox Code Playgroud)
在我的ProjectPage 模型中:
def form_search(searches)
searches = searches.where('amount > ?', params[:price_min]) if check_params(params[:price_min])
@project_pages = ProjectPage.where(:project_id => searches.pluck(:'projects.id'))
end
Run Code Online (Sandbox Code Playgroud)
但是,我无法成功调用该form_search 方法.
我可以使用泛型声明一个地图数组来指定地图类型:
private Map<String, Integer>[] myMaps;
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何正确实例化它:
myMaps = new HashMap<String, Integer>[count]; // gives "generic array creation" error
myMaps = new HashMap[count]; // gives an "unchecked or unsafe operation" warning
myMaps = (Map<String, Integer>[])new HashMap[count]; // also gives warning
Run Code Online (Sandbox Code Playgroud)
如何在不收到编译器错误或警告的情况下实例化此数组映射?
更新:
谢谢大家的回复.我最终得到了List建议.
不要问我为什么,但我需要做以下事情:
string ClassName = "SomeClassName";
object o = MagicallyCreateInstance("SomeClassName");
Run Code Online (Sandbox Code Playgroud)
我想知道有多少方法可以做到这一点,以及在哪种情况下使用哪种方法.
例子:
Activator.CreateInstanceAssembly.GetExecutingAssembly.CreateInstance("")这个问题并不是一个开放式的讨论,因为我相信只有这么多方法可以实现.
这是我的自定义课程...不确定我是否遗漏了任何东西......
import UIKit
class baseMakeUp {
var Image = UIImage()
var Brand: String
var Color: String
var Rating: Int = 0
init (Brand: String, Color: String) {
self.Brand = Brand
self.Color = Color
}
}
Run Code Online (Sandbox Code Playgroud)
我想在这里实例化......
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
let cellIdentifier = "cellIdentifier"
var foundation: [[baseMakeUp]]
var blush: [[baseMakeUp]]
var eyes: [[baseMakeUp]]
var lips: [[baseMakeUp]]
var nails: [[baseMakeUp]]
// put some test data in …Run Code Online (Sandbox Code Playgroud)