错误:结构的前向声明(error: forward declaration of struct)
我收到错误消息:
proprietario.cpp:36: error: invalid use of incomplete type ‘struct Motocicleta’ proprietario.h:12: error: forward declaration of ‘struct Motocicleta’
Motocicleta.h:
#ifndef __MOTOCICLETA__ #define __MOTOCICLETA__ #include <iostream> #include "veiculo.h" #include "proprietario.h" using namespace std; class Proprietario; class Motocicleta:public Veiculo{ public: Motocicleta(int nPassageiros, string modelo, string placa, int aFabricacao, Proprietario* pai, int nRodas, int aro); ~Motocicleta(); Motocicleta (const Motocicleta& source); Motocicleta& operator= (const Motocicleta& source); string toString(); }; #endif
Proprietario.h
#ifndef __PROPRIETARIO__ #define __PROPRIETARIO__ #include <iostream> #include "motocicleta.h" #include "caminhao.h" #include "carreta.h" #include "carro.h" using namespace std; class Carro; class Carreta; class Caminhao; class Motocicleta; class Proprietario{ protected: string nome; string cpf; Motocicleta* mMoto; Caminhao* mCaminhao; Carreta* mCarreta; Carro* mCarro; };
Veiculo.h:
#ifndef __VEICULO__ #define __VEICULO__ #include <iostream> #include "proprietario.h" #include "roda.h" #include "motor.h" using namespace std; class Motor; class Proprietario; class Veiculo{ protected: int nPassageiros; string modelo; string placa; int aFabricacao; Proprietario* pai; Roda* rodas; Motor* mMotor; int nRodas; };
我删除了这些方法,因为如果我添加了那些问题将会很长,对不起,代码在PT-BR中。 我看到问题通常是前向声明。 但我找不到问题,我查看了这么多论坛,但我找不到问题..
有人可以帮助我吗?
需要代码的其他部分?
I'm receiving the error:
proprietario.cpp:36: error: invalid use of incomplete type ‘struct Motocicleta’ proprietario.h:12: error: forward declaration of ‘struct Motocicleta’
Motocicleta.h:
#ifndef __MOTOCICLETA__ #define __MOTOCICLETA__ #include <iostream> #include "veiculo.h" #include "proprietario.h" using namespace std; class Proprietario; class Motocicleta:public Veiculo{ public: Motocicleta(int nPassageiros, string modelo, string placa, int aFabricacao, Proprietario* pai, int nRodas, int aro); ~Motocicleta(); Motocicleta (const Motocicleta& source); Motocicleta& operator= (const Motocicleta& source); string toString(); }; #endif
Proprietario.h
#ifndef __PROPRIETARIO__ #define __PROPRIETARIO__ #include <iostream> #include "motocicleta.h" #include "caminhao.h" #include "carreta.h" #include "carro.h" using namespace std; class Carro; class Carreta; class Caminhao; class Motocicleta; class Proprietario{ protected: string nome; string cpf; Motocicleta* mMoto; Caminhao* mCaminhao; Carreta* mCarreta; Carro* mCarro; };
Veiculo.h:
#ifndef __VEICULO__ #define __VEICULO__ #include <iostream> #include "proprietario.h" #include "roda.h" #include "motor.h" using namespace std; class Motor; class Proprietario; class Veiculo{ protected: int nPassageiros; string modelo; string placa; int aFabricacao; Proprietario* pai; Roda* rodas; Motor* mMotor; int nRodas; };
I removed the methods, because if i added those the question will be to long, sorry, the code is in PT-BR. I saw that the problem is usually is forward declaration. But i cannot find out the problem, i looked in so many forums but i cannot find out the problem..
Someone can help me?
Need any other part of the code?
原文:https://stackoverflow.com/questions/9840109
最满意答案
想到这个错了。 通过将第二个组合框绑定到第一个组合框设置的对象上的属性,并使用转换器转换该值,使其工作。 在我想到WPF / XAML之前,看起来我还有很长的路要走。
Was thinking about this wrong. Got it to work by binding the second combobox to the property on the object that the first combobox is setting, and using a converter to convert that value. Looks like I've got a ways to go before I'm thinking in WPF/XAML.
相关问答
更多-
有人可能会因为此解决方案的丑陋而将我钉死在十字架上,但您可以将高度和宽度的行和列添加为包含数据的实际行和列之间的填充值的两倍:你可以看一下 ,有一个解决方案(转到: Creating an AutoCommitCheckBoxColumn ) 概要: 派生自DataGridCheckBoxColumn并处理checkBox_Checked和checkBox_Unchecked事件。 public class AutoCommitCheckBoxColumn : DataGridCheckBoxColumn { private void checkBox_Unchecked(object sender, RoutedEven ...如果考虑ItemsSource , ObservableCollection的ObservableCollection ,那么您将认识到网格中的每一行只是一个ObservableCollection对象。 DataGrid不够智能,无法在每个项目中查看集合内部(并且没有意义 - 每个集合中可能有不同数量的项目,因此它无法自动将项目映射到列)。 它只会查看作为行的DataContext的对象,并将公共属性用作列(在本例中, ObservableCollection的唯一属性是Count ) 编辑:我只记得IB ...我终于得到了答案 将Key_UP事件添加到该文本框 并在代码后面: private void txtFirstName_KeyUp(object sender, KeyEventArgs e) { List
_lstTemp = dataGrid1.ItemsSource as List ; var selectedrow = dataGrid1.SelectedItem as Users; T ... 你应该使用这样的东西: {Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path= DataContext.ItemSourcePropery}" 其中ItemSourceProperty是您要绑定到的ObservableCollection。 此外,如果您在窗口中,请设置“窗口”或其他任何类型。 You should use something like that : {B ...repositoryItemComboBox是非常不幸的控件,因为它不使用DataSource属性。 我建议你在将数据绑定到gridview后填充项目: repositoryItemComboBox1.Items.AddRange(productsData.Select(p => p.Product).ToArray(); repositoryItemComboBox is quite unfortunate control, since it doesn't use DataSource propert ...我猜这个问题之所以在这里坐了4个小时,没有回答,是因为我们都在问自己:“我错过了这里的问题吗?”。 首先,你实际上不能“同时编辑每个单元格”,毕竟当你按下键盘上的一个键时,只有一个控制器正在接受输入,而另一个则是焦点。 如果让它自动生成单元格,“Excel工作表”行为正是您从DataGrid获得的行为。 所以这个问题是关于你分配给ItemsSource属性的对象。 你真的需要告诉我们你用什么来存储数据。 事实是,如果您包含WCF RIA服务,您的要求很容易实现。 Ulitmately你会得到一个“数据上下文 ...想到这个错了。 通过将第二个组合框绑定到第一个组合框设置的对象上的属性,并使用转换器转换该值,使其工作。 在我想到WPF / XAML之前,看起来我还有很长的路要走。 Was thinking about this wrong. Got it to work by binding the second combobox to the property on the object that the first combobox is setting, and using a converter to conv ...如何在Silverlight中检测单元格的值何时发生变化?(How do I detect when a cell's value has changed in Silverlight?)[2022-03-15]
你应该使用数据绑定。 将单元格字体颜色绑定到单元格的内容 创建转换器IValueConverter,根据您的需要将值转换为颜色 在这里看一个很好的例子 http://weblogs.asp.net/joewrobel/archive/2009/01/25/conditional-formatting-in-the-silverlight-datagrid.aspx You should use databinding for this. Bind your cell font color to the co ...Silverlight DataGrid如何从所选项中获取单元格值?(Silverlight DataGrid how to get cell value from a selected item?)[2022-05-12]
感谢VooDooChild,请参阅下面的解决方案,使用textblock获取价值。 private void FindDetails_SelectionChanged(object sender, SelectionChangedEventArgs e) { DataGrid dataGrid = sender as DataGrid; int selectedIndex = dataGrid.SelectedIndex; if (selectedI ...相关文章
更多- eclipse中,如何修改declaration窗口的背景色?
- 两种js function 声明方式
- Redis 数据库内部结构-Redis数据类型
- 《JAVA代码规范》(十一)编程惯例、其它惯例、代码范例 (7-10)
- Oracle ORA-04031 错误 说明
- Oracle ORA-04031 错误 说明
- Oracle ORA-04031 错误 说明
- Oracle ORA-04031 错误 说明
- Oracle ORA-04031 错误 说明
- Oracle ORA-04031 错误 说明
最新问答
更多- 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
- 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
- OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
- 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
- codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
- 在计算机拍照在哪里进入
- 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
- No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
- 单页应用程序:页面重新加载(Single Page Application: page reload)
- 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
- System.StackOverflow错误(System.StackOverflow error)
- KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
- 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
- android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
- TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
- 企业安全培训的各项内容
- 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
- C#类名中允许哪些字符?(What characters are allowed in C# class name?)
- NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
- 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
- 将多个行和可变行移动到列(moving multiple and variable rows to columns)
- 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
- 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
- Angular $资源不会改变方法(Angular $resource doesn't change method)
- 在Angular 5中不是一个函数(is not a function in Angular 5)
- 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
- 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
- 常见的python rpc和cli接口(Common python rpc and cli interface)
- Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
- 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)